- সিনট্যাক্স:
<uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group>
- এর মধ্যে অন্তর্ভুক্ত:
-
<intent-filter> - এতে থাকতে পারে:
-
<data> - বর্ণনা:
- সুনির্দিষ্ট
Intentম্যাচিং নিয়ম তৈরি করে, যাতে URI কোয়েরি প্যারামিটার এবং URI ফ্র্যাগমেন্ট অন্তর্ভুক্ত থাকতে পারে।android: allowঅ্যাট্রিবিউটের উপর নির্ভর করে নিয়মগুলো অন্তর্ভুক্তিকরণ ( allow ) বা বর্জন ( blocking ) হতে পারে। এই ম্যাচিং নিয়মগুলো অন্তর্ভুক্ত<data>এলিমেন্টেরpath*,fragment*, এবংquery*অ্যাট্রিবিউটের মাধ্যমে নির্দিষ্ট করা হয়।মিলানো
একটি URI মেলানোর জন্য, URI রিলেটিভ ফিল্টার গ্রুপের প্রতিটি অংশকে অবশ্যই URI-টির কোনো একটি অংশের সাথে মিলতে হবে। URI-এর এমন অংশও থাকতে পারে যা URI রিলেটিভ ফিল্টার গ্রুপে নির্দিষ্ট করা নেই। উদাহরণস্বরূপ:
<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সাথে মেলে, কারণ URI রিলেটিভ ফিল্টার গ্রুপ দ্বারা নির্দিষ্ট করা সবকিছুই এখানে উপস্থিত আছে। ফিল্টারটিhttps://project.example.com/any/path/here?param2=value2¶m1=value1সাথেও মেলে, কারণ কোয়েরি প্যারামিটারগুলোর ক্রম এখানে বিবেচ্য নয়। তবে, ফিল্টারটিhttps://project.example.com/any/path/here?param1=value1সাথে মেলে না, কারণ এখানেparam2=value2অনুপস্থিত।অথবা এবং এবং
<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>স্তরে URI অ্যাট্রিবিউটগুলো পরস্পরের উপর নির্ভরশীল।- ইন্টেন্ট ফিল্টারের জন্য কোনো
schemeনির্দিষ্ট করা না থাকলে, অন্য সব URI অ্যাট্রিবিউট উপেক্ষা করা হয়। - ফিল্টারের জন্য কোনো
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এই URI-টি আছে, যেটিকে আপনি একটি কোয়েরি প্যারামিটারের উপস্থিতি বা মানের উপর নির্ভর করে একটিIntentসাথে মেলাতে চান। এমন একটি 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?queryURI-টি/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>
এই ফিল্টারটি কাজ করে, কারণ যে ব্লকিং নিয়মগুলো খালি নয় এমন কোয়েরি প্যারামিটার নিষিদ্ধ করে, সেগুলো প্রথমে মূল্যায়ন করা হয়।
কোডটিকে সরল করার জন্য, আচরণটি উল্টে দিন যাতে কোয়েরি প্যারামিটার অনুমোদিত হয় এবং কোয়েরি প্যারামিটার ছাড়া URI-গুলো ব্লক হয়ে যায়:
<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>
URI-এনকোডেড অক্ষর
যেসব URI-তে URI-এনকোডেড অক্ষর রয়েছে, সেগুলোকে মেলানোর জন্য ফিল্টারে আসল, এনকোডবিহীন অক্ষরগুলো লিখুন, উদাহরণস্বরূপ:
<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>এলিমেন্ট রাখতে পারেন।অতিরিক্ত সম্পদ
ইনটেন্ট ফিল্টার কীভাবে কাজ করে, সেইসাথে ফিল্টারের সাথে ইনটেন্ট অবজেক্টগুলো কীভাবে মেলানো হয় তার নিয়মাবলী সম্পর্কে জানতে, “Intents and Intent Filters” এবং “Intent Filters” দেখুন।
<uri-relative-filter-group>সম্পর্কে তথ্যের জন্য,UriRelativeFilterGroupএবংUriRelativeFilterদেখুন। - ইন্টেন্ট ফিল্টারের জন্য কোনো
- বৈশিষ্ট্য:
-
android:allow - এই URI-সাপেক্ষ ফিল্টার গ্রুপটি বর্জন ( ব্লকিং ) নিয়মের পরিবর্তে অন্তর্ভুক্তি ( অনুমতি ) নিয়ম কিনা। এর ডিফল্ট মান হলো
"true"।মূল্য বর্ণনা "true"(ডিফল্ট)যদি URI-সাপেক্ষ ফিল্টার গ্রুপটি মিলে যায়, তাহলে ইন্টেন্ট ফিল্টারটিও মিলে যাবে। "false"যদি URI-সাপেক্ষ ফিল্টার গ্রুপটি মিলে যায়, তাহলে ইন্টেন্ট ফিল্টারটি মেলে না।
-
- এতে প্রবর্তন করা হয়েছিল:
- এপিআই লেভেল ৩৫
- আরও দেখুন:
-
<intent-filter>
<data>
<uri-রিলেটিভ-ফিল্টার-গ্রুপ>
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2026-04-21 UTC-তে শেষবার আপডেট করা হয়েছে।
[null,null,["2026-04-21 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[]]