- सिंटैक्स:
-
<uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group>
- इनमें शामिल है:
-
<intent-filter> - इसमें ये चीज़ें शामिल हो सकती हैं:
-
<data> - जानकारी:
-
मैच करने के सटीक
Intentनियम बनाता है. इनमें यूआरआई क्वेरी पैरामीटर और यूआरआई फ़्रैगमेंट शामिल हो सकते हैं.android:allowएट्रिब्यूट के आधार पर, ये नियम शामिल करने (अनुमति) या बाहर रखने (ब्लॉक करने) वाले नियम हो सकते हैं. मैच करने के नियम,<data>एलिमेंट केpath*,fragment*, औरquery*एट्रिब्यूट से तय किए जाते हैं.मैच करना
किसी यूआरआई से मैच करने के लिए, यूआरआई के रिलेटिव फ़िल्टर ग्रुप का हर हिस्सा, यूआरआई के किसी हिस्से से मैच करना चाहिए. यूआरआई के ऐसे हिस्से हो सकते हैं जिन्हें यूआरआई के रिलेटिव फ़िल्टर ग्रुप में नहीं बताया गया है. उदाहरण के लिए:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param1=value1" /> <data android:query="param2=value2" /> </uri-relative-filter-group> ... </intent-filter>
फ़िल्टर,
https://project.example.com/any/path/here?param1=value1¶m2=value2¶m3=value3से मेल खाता है, क्योंकि यूआरआई के हिसाब से फ़िल्टर ग्रुप में बताई गई सभी चीज़ें मौजूद हैं. फ़िल्टर,https://project.example.com/any/path/here?param2=value2¶m1=value1से भी मैच करता है, क्योंकि क्वेरी पैरामीटर के क्रम से कोई फ़र्क़ नहीं पड़ता. हालांकि, फ़िल्टरhttps://project.example.com/any/path/here?param1=value1से मैच नहीं करता, जिसमेंparam2=value2मौजूद नहीं है.OR और AND
<uri-relative-filter-group>के बाहर मौजूद<data>टैग के लिए OR का इस्तेमाल किया जाता है, जबकि<uri-relative-filter-group>के अंदर मौजूद<data>टैग के लिए AND का इस्तेमाल किया जाता है.नीचे दिया गया उदाहरण देखें:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <data android:pathPrefix="/prefix" /> <data android:pathSuffix="suffix" /> ... </intent-filter>
यह फ़िल्टर,
/prefixसे शुरू होने वाले याsuffixपर खत्म होने वाले पाथ से मेल खाता है.इसके उलट, अगला उदाहरण उन पाथ से मैच करता है जो
/prefixसे शुरू होते हैं औरsuffixपर खत्म होते हैं:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:pathPrefix="/prefix" /> <data android:pathSuffix="suffix" /> </uri-relative-filter-group> ... </intent-filter>
इस वजह से, एक ही
<uri-relative-filter-group>में कईpathएट्रिब्यूट, किसी भी चीज़ से मैच नहीं करते:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:path="/path1" /> <data android:path="/path2" /> </uri-relative-filter-group> ... </intent-filter>
एलान का क्रम
नीचे दिया गया उदाहरण देखें:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group> <data android:fragment="fragment" /> </uri-relative-filter-group> <uri-relative-filter-group android:allow="false"> <data android:fragmentPrefix="fragment" /> </uri-relative-filter-group> ... </intent-filter>
फ़िल्टर, फ़्रैगमेंट
#fragmentसे मैच करता है, क्योंकि बाहर रखे जाने के नियम का आकलन करने से पहले ही मैच मिल जाता है. हालांकि,#fragment123जैसे फ़्रैगमेंट मैच नहीं करते.सिबलिंग टैग
<uri-relative-filter-group>टैग, अपने सिबलिंग<data>टैग के साथ मिलकर काम करते हैं. सिबलिंग टैग, ऐसे<data>टैग होते हैं जो<uri-relative-filter-group>के बाहर होते हैं, लेकिन एक ही<intent-filter>में होते हैं.<uri-relative-filter-group>टैग के सही तरीके से काम करने के लिए, उनमें सिबलिंग<data>टैग होने चाहिए. ऐसा इसलिए है, क्योंकि यूआरआई एट्रिब्यूट, एक-दूसरे पर निर्भर होते हैं और ये<intent-filter>लेवल पर होते हैं:- अगर इंटेंट फ़िल्टर के लिए कोई
schemeतय नहीं किया गया है, तो यूआरआई के अन्य सभी एट्रिब्यूट को अनदेखा कर दिया जाता है. - अगर फ़िल्टर के लिए कोई
hostतय नहीं किया गया है, तोportएट्रिब्यूट और सभीpath*एट्रिब्यूट को अनदेखा कर दिया जाता है.
<intent-filter>के<data>चाइल्ड टैग का आकलन, किसी भी<uri-relative-filter-group>टैग से पहले किया जाता है. इसके बाद,<uri-relative-filter-group>टैग का क्रम से आकलन किया जाता है. उदाहरण के लिए:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="false"> <data android:path="/path" /> <data android:query="query" /> </uri-relative-filter-group> <data android:path="/path" /> ... </intent-filter>
फ़िल्टर,
https://project.example.com/path?queryको स्वीकार करता है, क्योंकि यह<data android:path="/path" />से मैच करता है. यह वैल्यू,<uri-relative-filter-group>को बाहर रखने के नियम के दायरे में नहीं आती.इस्तेमाल के सामान्य उदाहरण
मान लें कि आपके पास यूआरआई
https://project.example.com/pathहै, जिसे आपको क्वेरी पैरामीटर की मौजूदगी या वैल्यू के आधार पर,Intentसे मैच करना है.https://project.example.com/pathसे मैच करने औरhttps://project.example.com/path?queryको ब्लॉक करने वाला इंटेंट फ़िल्टर बनाने के लिए, कुछ ऐसा आज़माएं:<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> </uri-relative-filter-group> ... </intent-filter>
असल में, यह तरीका काम नहीं करता.
https://project.example.com/path?queryयूआरआई, पाथ/pathसे मैच करता है. साथ ही, मैच करते समय<uri-relative-filter-group>टैग में अतिरिक्त पार्ट शामिल किए जा सकते हैं.इंटेंट फ़िल्टर में इस तरह बदलाव करें:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="false"> <data android:path="/path" /> <data android:queryAdvancedPattern=".+" /> </uri-relative-filter-group> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> </uri-relative-filter-group> ... </intent-filter>
यह फ़िल्टर इसलिए काम करता है, क्योंकि खाली क्वेरी पैरामीटर को ब्लॉक करने वाले नियमों का आकलन सबसे पहले किया जाता है.
कोड को आसान बनाने के लिए, क्वेरी पैरामीटर की अनुमति देने और क्वेरी पैरामीटर के बिना यूआरआई को ब्लॉक करने के लिए, व्यवहार को फ़्लिप करें:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:path="/path" /> <data android:queryAdvancedPattern=".+" /> </uri-relative-filter-group> ... </intent-filter>
यूआरआई-एन्कोड किए गए वर्ण
यूआरआई-कोड वाले वर्णों वाले यूआरआई से मैच करने के लिए, फ़िल्टर में रॉ, बिना कोड वाले वर्ण लिखें. उदाहरण के लिए:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param=value!" /> </uri-relative-filter-group> ... </intent-filter>
फ़िल्टर,
?param=value!और?param=value%21से मैच करता है.हालांकि, अगर फ़िल्टर में कोड में बदले गए वर्ण इस तरह लिखे जाते हैं:
<intent-filter...> <data android:scheme="https" android:host="project.example.com" /> <uri-relative-filter-group android:allow="true"> <data android:query="param=value%21" /> </uri-relative-filter-group> ... </intent-filter>
फ़िल्टर,
?param=value!या?param=value%21से मेल नहीं खाता.एलिमेंट की संख्या
<intent-filter>के अंदर, जितने चाहें उतने<uri-relative-filter-group>एलिमेंट डाले जा सकते हैं.दूसरे संसाधन
इंटेंट फ़िल्टर के काम करने के तरीके के बारे में जानकारी पाने के लिए, इंटेंट ऑब्जेक्ट को फ़िल्टर से मैच करने के नियमों के साथ-साथ, इंटेंट और इंटेंट फ़िल्टर और इंटेंट फ़िल्टर लेख पढ़ें.
<uri-relative-filter-group>के बारे में जानकारी पाने के लिए,UriRelativeFilterGroupऔरUriRelativeFilterदेखें. - अगर इंटेंट फ़िल्टर के लिए कोई
- एट्रिब्यूट:
-
android:allow-
क्या यह यूआरआई रिलेटिव फ़िल्टर ग्रुप, बाहर रखे गए (ब्लॉक करने) नियम के बजाय, शामिल किए गए (अनुमति देने) नियम है. डिफ़ॉल्ट वैल्यू
"true"है.वैल्यू ब्यौरा "true"(डिफ़ॉल्ट)अगर यूआरआई का रिलेटिव फ़िल्टर ग्रुप मैच करता है, तो इंटेंट फ़िल्टर मैच करता है "false"अगर यूआरआई का रिलेटिव फ़िल्टर ग्रुप मैच करता है, तो इंटेंट फ़िल्टर मैच नहीं करता
- पहली बार इसमें दिखाया गया:
- एपीआई लेवल 35
- यह भी देखें:
-
<intent-filter><data>
<uri-relative-filter-group>
इस पेज पर मौजूद कॉन्टेंट और कोड सैंपल कॉन्टेंट के लाइसेंस में बताए गए लाइसेंस के हिसाब से हैं. Java और OpenJDK, Oracle और/या इससे जुड़ी हुई कंपनियों के ट्रेडमार्क या रजिस्टर किए हुए ट्रेडमार्क हैं.
आखिरी बार 2025-07-27 (UTC) को अपडेट किया गया.
[[["समझने में आसान है","easyToUnderstand","thumb-up"],["मेरी समस्या हल हो गई","solvedMyProblem","thumb-up"],["अन्य","otherUp","thumb-up"]],[["वह जानकारी मौजूद नहीं है जो मुझे चाहिए","missingTheInformationINeed","thumb-down"],["बहुत मुश्किल है / बहुत सारे चरण हैं","tooComplicatedTooManySteps","thumb-down"],["पुराना","outOfDate","thumb-down"],["अनुवाद से जुड़ी समस्या","translationIssue","thumb-down"],["सैंपल / कोड से जुड़ी समस्या","samplesCodeIssue","thumb-down"],["अन्य","otherDown","thumb-down"]],["आखिरी बार 2025-07-27 (UTC) को अपडेट किया गया."],[],[]]