<डेटा>

सिंटैक्स:
अगर डेटा टैग, <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>
जानकारी:
इंटेंट फ़िल्टर में डेटा स्पेसिफ़िकेशन जोड़ता है. स्पेसिफ़िकेशन, mimeType एट्रिब्यूट, यूआरआई या डेटा टाइप और यूआरआई, दोनों का इस्तेमाल करके डेटा टाइप होता है. यूआरआई के हर हिस्से के लिए, अलग-अलग एट्रिब्यूट तय किए जाते हैं:

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

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

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

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

<intent-filter . . . >
    <data android:scheme="something" android:host="project.example.com" />
    ...
</intent-filter>

इस फ़ंक्शन के बराबर है:

<intent-filter . . . >
    <data android:scheme="something" />
    <data android:host="project.example.com" />
    ...
</intent-filter>

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

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

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

स्कीम को कोलन के बिना दिखाया जाता है, जैसे कि http: के बजाय http.

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

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

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

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

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

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

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

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

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

  • पीरियड (.) किसी भी वर्ण से मेल खाता है.
  • सेट ([...]) वर्णों की रेंज से मेल खाता है. उदाहरण के लिए, [0-5] शून्य से लेकर पांच तक के किसी भी अंक से मैच करता है, लेकिन छह से लेकर नौ तक के अंकों से नहीं. [a-zA-Z] किसी भी अक्षर से मेल खाता है, भले ही वह कैपिटल या स्माल लेटर में हो. सेट में "नहीं" ^ मॉडिफ़ायर का भी इस्तेमाल किया जा सकता है.
  • तारे का निशान (*) वाला मॉडिफ़ायर, पिछले पैटर्न से शून्य या उससे ज़्यादा बार मैच करता है.
  • प्लस (+) मॉडिफ़ायर, पिछले पैटर्न से एक या उससे ज़्यादा बार मैच करता है.
  • रेंज ({...}) मॉडिफ़ायर से यह तय होता है कि कोई पैटर्न कितनी बार मैच कर सकता है.
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

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

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

एपीआई लेवल 35 में लॉन्च किया गया.

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

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

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

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