<डेटा>

सिंटैक्स:
अगर डेटा टैग, <intent-filter> का चाइल्ड है, तो:
<data android:scheme="string"
      android:host="string"
      android:port="string"
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:mimeType="string" />

अगर डेटा टैग, <uri-relative-filter-group> का चाइल्ड है, तो:
<data
      android:path="string"
      android:pathPattern="string"
      android:pathPrefix="string"
      android:pathSuffix="string"
      android:pathAdvancedPattern="string"
      android:fragment="string"
      android:fragmentPattern="string"
      android:fragmentPrefix="string"
      android:fragmentSuffix="string"
      android:fragmentAdvancedPattern="string"
      android:query="string"
      android:queryPattern="string"
      android:queryPrefix="string"
      android:querySuffix="string"
      android:queryAdvancedPattern="string" />
इसमें मौजूद है:
<intent-filter>
<uri-relative-filter-group>
description:
यह इंटेंट फ़िल्टर में डेटा स्पेसिफ़िकेशन जोड़ता है. स्पेसिफ़िकेशन, mimeType एट्रिब्यूट का इस्तेमाल करके डेटा टाइप, यूआरआई या डेटा टाइप और यूआरआई, दोनों हो सकता है. यूआरआई के हर हिस्से के लिए, अलग-अलग एट्रिब्यूट तय किए जाते हैं:

<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]

यूआरआई फ़ॉर्मैट के बारे में बताने वाली ये विशेषताएं ज़रूरी नहीं हैं. हालांकि, ये एक-दूसरे पर निर्भर करती हैं:

  • अगर इंटेंट फ़िल्टर के लिए scheme नहीं दिया गया है, तो यूआरआई के अन्य सभी एट्रिब्यूट को अनदेखा कर दिया जाता है.
  • अगर फ़िल्टर के लिए host नहीं दिया गया है, तो port एट्रिब्यूट और सभी पाथ एट्रिब्यूट को अनदेखा कर दिया जाता है.

एक ही <intent-filter> एलिमेंट में मौजूद सभी <data> एलिमेंट, एक ही फ़िल्टर में योगदान देते हैं. उदाहरण के लिए, यहां दिए गए फ़िल्टर स्पेसिफ़िकेशन में:

<intent-filter . . . >
    <data android:scheme="something" android:host="project1.example.com" />
    <data android:scheme="something-else" android:host="project2.example.com" android:path="/page1" />
    ...
</intent-filter>

इसके बराबर है:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:scheme="something-else" />
    <data android:host="project1.example.com" />
    <data android:host="project2.example.com" />
    <data android:path="/page1" />
    ...
</intent-filter>

<data> एलिमेंट में कई <data> एलिमेंट जोड़े जा सकते हैं, ताकि उसे कई डेटा विकल्प दिए जा सकें.<intent-filter> इसके किसी भी एट्रिब्यूट की डिफ़ॉल्ट वैल्यू नहीं होती.

इंटेंट फ़िल्टर के काम करने के तरीके के बारे में जानकारी के लिए, इंटेंट और इंटेंट फ़िल्टर लेख पढ़ें. इसमें इंटेंट ऑब्जेक्ट को फ़िल्टर से मैच करने के नियमों के बारे में भी बताया गया है. इसके अलावा, मेनिफ़ेस्ट फ़ाइल की खास जानकारी में मौजूद इंटेंट फ़िल्टर सेक्शन देखें.

एट्रिब्यूट:
android:scheme
यह यूआरआई का स्कीम वाला हिस्सा होता है. यूआरआई तय करने के लिए, यह सबसे ज़रूरी एट्रिब्यूट है. फ़िल्टर के लिए, कम से कम एक scheme एट्रिब्यूट सेट किया जाना चाहिए. ऐसा न होने पर, अन्य यूआरआई एट्रिब्यूट का कोई मतलब नहीं रह जाता.

स्कीम को ट्रेलिंग कोलन के बिना बताया गया है. जैसे, http के बजाय http:.

अगर फ़िल्टर के लिए, mimeType एट्रिब्यूट का इस्तेमाल करके डेटा टाइप सेट किया गया है, लेकिन कोई स्कीम नहीं है, तो content: और file: स्कीम को डिफ़ॉल्ट रूप से लागू माना जाता है.

ध्यान दें: Android फ़्रेमवर्क में स्कीम मैचिंग, RFC के उलट केस-सेंसिटिव होती है. इसलिए, हमेशा छोटे अक्षरों का इस्तेमाल करके स्कीम तय करें.

android:host
यह यूआरआई अथॉरिटी का होस्ट वाला हिस्सा होता है. इस एट्रिब्यूट का कोई मतलब नहीं है, जब तक कि फ़िल्टर के लिए scheme एट्रिब्यूट भी न दिया गया हो. एक से ज़्यादा सबडोमेन से मैच करने के लिए, तारे के निशान (*) का इस्तेमाल करें. इससे होस्ट में शून्य या उससे ज़्यादा वर्णों से मैच किया जा सकता है. उदाहरण के लिए, होस्ट *.google.com, www.google.com, .google.com, और developer.google.com से मेल खाता है.

तारे का निशान, होस्ट एट्रिब्यूट का पहला वर्ण होना चाहिए. उदाहरण के लिए, होस्ट google.co.* अमान्य है, क्योंकि ऐस्टरिक वाइल्डकार्ड पहला वर्ण नहीं है.

ध्यान दें: Android फ़्रेमवर्क में होस्ट के नाम का मिलान करते समय, केस का ध्यान रखा जाता है. हालांकि, RFC में ऐसा नहीं होता. इसलिए, होस्ट के नाम हमेशा छोटे अक्षरों में लिखें.

android:port
यह यूआरआई अथॉरिटी का पोर्ट वाला हिस्सा होता है. इस एट्रिब्यूट की वैल्यू सिर्फ़ तब मायने रखती है, जब फ़िल्टर के लिए scheme और host एट्रिब्यूट की वैल्यू भी दी गई हो.
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
यूआरआई का पाथ वाला हिस्सा, जो / से शुरू होना चाहिए. path एट्रिब्यूट, पूरे पाथ की जानकारी देता है. इसका मिलान Intent ऑब्जेक्ट में मौजूद पूरे पाथ से किया जाता है. pathPrefix एट्रिब्यूट, पाथ का वह हिस्सा तय करता है जिसे Intent ऑब्जेक्ट में मौजूद पाथ के सिर्फ़ शुरुआती हिस्से से मैच किया जाता है.

pathSuffix एट्रिब्यूट, Intent ऑब्जेक्ट में मौजूद पाथ के आखिरी हिस्से से पूरी तरह मैच होना चाहिए. साथ ही, इस एट्रिब्यूट की वैल्यू / वर्ण से शुरू नहीं होनी चाहिए.

pathPattern एट्रिब्यूट, एक ऐसा पूरा पाथ तय करता है जिसे Intent ऑब्जेक्ट में मौजूद पूरे पाथ से मैच किया जाता है. हालांकि, इसमें ये वाइल्डकार्ड शामिल हो सकते हैं:

  • पीरियड (.) किसी भी वर्ण से मेल खाता है.
  • तारे (*) का इस्तेमाल, ठीक पहले वाले वर्ण के शून्य से लेकर कई बार दिखने वाले क्रम से मेल खाने के लिए किया जाता है.
  • बिंदु के बाद स्टार (.*) का इस्तेमाल करने पर, यह शून्य से लेकर कई वर्णों के किसी भी क्रम से मेल खाता है.

pathAdvancedPattern एट्रिब्यूट, पूरा पाथ तय करता है. इसे Intent ऑब्जेक्ट के पूरे पाथ से मैच किया जाता है. साथ ही, यह रेगुलर एक्सप्रेशन जैसे इन पैटर्न के साथ काम करता है:

  • पीरियड (.) किसी भी वर्ण से मेल खाता है.
  • सेट ([...]), वर्णों की रेंज से मेल खाता है. उदाहरण के लिए, [0-5], 0 से 5 के बीच के किसी भी अंक से मैच करता है, लेकिन 6 से 9 के बीच के किसी भी अंक से मैच नहीं करता. [a-zA-Z] किसी भी अक्षर से मेल खाता है, भले ही वह कैपिटल लेटर हो या स्मॉल लेटर. सेट में "not" ^ मॉडिफ़ायर का इस्तेमाल भी किया जा सकता है.
  • तारे (*) वाला मॉडिफ़ायर, पिछले पैटर्न से शून्य या उससे ज़्यादा बार मैच करता है.
  • प्लस (+) मॉडिफ़ायर, पिछले पैटर्न से एक या उससे ज़्यादा बार मैच करता है.
  • रेंज ({...}) मॉडिफ़ायर से यह तय होता है कि कोई पैटर्न कितनी बार मैच हो सकता है.
pathAdvancedPattern मैच करने वाला फ़ंक्शन, आकलन को लागू करने का एक तरीका है. इसमें पैटर्न से मैच करने की प्रोसेस रीयल टाइम में होती है. इसमें बैकट्रैकिंग की सुविधा नहीं होती.

\ का इस्तेमाल एस्केप कैरेक्टर के तौर पर किया जाता है. ऐसा तब होता है, जब स्ट्रिंग को एक्सएमएल से पढ़ा जाता है. इसलिए, पैटर्न के तौर पर पार्स किए जाने से पहले, आपको इसे दो बार एस्केप करना होगा. उदाहरण के लिए, लिटरल * को \\* के तौर पर लिखा जाता है और लिटरल \ को \\\\ के तौर पर लिखा जाता है. यह Java कोड में स्ट्रिंग बनाते समय लिखे जाने वाले कोड की तरह होता है.

इन पांच तरह के पैटर्न के बारे में ज़्यादा जानने के लिए, PatternMatcher क्लास में PATTERN_LITERAL, PATTERN_PREFIX, PATTERN_SIMPLE_GLOB, PATTERN_SUFFIX, और PATTERN_ADVANCED_GLOB के ब्यौरे देखें.

इन एट्रिब्यूट का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब फ़िल्टर के लिए scheme और host एट्रिब्यूट भी दिए गए हों.

pathSuffix और pathAdvancedPattern को एपीआई लेवल 31 में पेश किया गया था.

android:fragment
android:fragmentPrefix
android:fragmentSuffix
android:fragmentPattern
android:fragmentAdvancedPattern

यह यूआरआई फ़्रैगमेंट के लिए मैच करने वाला फ़ंक्शन है. # प्रीफ़िक्स शामिल न करें. हर एट्रिब्यूट के लिए मान्य पैटर्न और उनके मतलब के बारे में जानने के लिए, ऊपर दिया गया सेक्शन देखें.

आम तौर पर यूआरआई में कोड किए जाने वाले वर्णों से मेल खाने के लिए, एट्रिब्यूट की वैल्यू में रॉ (बिना कोड वाला) फ़ॉर्म शामिल करें. उदाहरण के लिए, <data android:fragment="test!" />, #test! और #test%21 से मेल खाता है.

इसे एपीआई लेवल 35 में पेश किया गया था.

android:query
android:queryPrefix
android:querySuffix
android:queryPattern
android:queryAdvancedPattern

यह यूआरआई क्वेरी पैरामीटर (और ज़रूरत पड़ने पर, वैल्यू) के लिए मैच करने वाला फ़ंक्शन है. उदाहरण के लिए, <data android:query="param=value" /> की मदद से, ?param=value से खत्म होने वाले यूआरआई मैच किए जा सकते हैं. ? प्रीफ़िक्स शामिल न करें. हर एट्रिब्यूट में इस्तेमाल किए जा सकने वाले पैटर्न और उनके मतलब के बारे में जानने के लिए, ऊपर दिया गया सेक्शन देखें.

आम तौर पर यूआरआई के तौर पर कोड किए गए वर्णों से मेल खाने के लिए, एट्रिब्यूट की वैल्यू में रॉ (नॉनकोडेड) फ़ॉर्म शामिल करें. उदाहरण के लिए, <data android:query="test!" />, ?test! और ?test%21 से मेल खाता है.

इसे एपीआई लेवल 35 में पेश किया गया था.

android:mimeType
MIME मीडिया टाइप, जैसे कि image/jpeg या audio/mpeg4-generic. उप-टाइप के तौर पर, तारे के निशान वाले वाइल्डकार्ड (*) का इस्तेमाल किया जा सकता है. इससे पता चलता है कि कोई भी उप-टाइप मेल खाता है.

आम तौर पर, इंटेंट फ़िल्टर एक <data> एलिमेंट का एलान करता है. इसमें सिर्फ़ android:mimeType एट्रिब्यूट शामिल होता है.

ध्यान दें: Android फ़्रेमवर्क में MIME टाइप मैचिंग, केस-सेंसिटिव होती है. हालांकि, फ़ॉर्मल RFC MIME टाइप में ऐसा नहीं होता. इसलिए, MIME टाइप हमेशा छोटे अक्षरों में तय करें.

पहली बार इसमें दिखाया गया:
एपीआई लेवल 1
यह भी देखें:
<action>
<category>