- সিনট্যাক্স:
<uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group>
- এর মধ্যে রয়েছে:
-
<intent-filter> - থাকতে পারে:
-
<data> - বর্ণনা:
- সুনির্দিষ্ট
Intentম্যাচিং নিয়ম তৈরি করে যাতে URI ক্যোয়ারী প্যারামিটার এবং URI টুকরা অন্তর্ভুক্ত থাকতে পারে।android: allowঅ্যাট্রিবিউটের উপর নির্ভর করে নিয়মগুলি অন্তর্ভুক্তি ( অনুমতি ) নিয়ম বা বর্জন ( ব্লকিং ) নিয়ম হতে পারে। মিলিত নিয়মগুলিpath*,fragment*, এবংquery*বৈশিষ্ট্য দ্বারা নির্দিষ্ট করা হয়<data>উপাদানগুলির।ম্যাচিং
একটি 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>ট্যাগগুলি ORed হয়, যখন একটি<uri-relative-filter-group>এর ভিতরে<data>ট্যাগগুলি ANDed হয়৷নিম্নলিখিত উদাহরণ বিবেচনা করুন:
<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>ট্যাগ থাকতে হবে কারণ URI বৈশিষ্ট্যগুলি<intent-filter>স্তরে পারস্পরিকভাবে নির্ভরশীল:- যদি উদ্দেশ্য ফিল্টারের জন্য একটি
schemeনির্দিষ্ট করা না থাকে, তবে অন্যান্য সমস্ত URI গুণাবলী উপেক্ষা করা হয়। - ফিল্টারের জন্য
hostনির্দিষ্ট না থাকলে,portঅ্যাট্রিবিউট এবং সমস্তpath*অ্যাট্রিবিউট উপেক্ষা করা হয়।
যে কোনো
<uri-relative-filter-group>ট্যাগের আগে<data>বাচ্চাদের<intent-filter>মূল্যায়ন করা হয়। তারপর<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>বর্জন নিয়মের বাইরে।সাধারণ ব্যবহারের ক্ষেত্রে
কল্পনা করুন আপনার কাছে URI
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?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>উপাদান রাখতে পারেন।অতিরিক্ত সম্পদ
উদ্দেশ্য ফিল্টারগুলি কীভাবে কাজ করে সে সম্পর্কে তথ্যের জন্য, কীভাবে অভিপ্রায় বস্তুগুলি ফিল্টারের সাথে মিলিত হয় তার নিয়মগুলি সহ, ইন্টেন্ট এবং ইনটেন্ট ফিল্টার এবং অভিপ্রায় ফিল্টারগুলি দেখুন৷
<uri-relative-filter-group>সম্পর্কে তথ্যের জন্য,UriRelativeFilterGroupএবংUriRelativeFilterদেখুন। - যদি উদ্দেশ্য ফিল্টারের জন্য একটি
- গুণাবলী:
-
android:allow - এই URI আপেক্ষিক ফিল্টার গ্রুপটি একটি বর্জন ( ব্লকিং ) নিয়মের পরিবর্তে একটি অন্তর্ভুক্তি ( অনুমতি দিন ) নিয়ম কিনা। ডিফল্ট মান হল
"true"।মান বর্ণনা "true"(ডিফল্ট)যদি URI আপেক্ষিক ফিল্টার গ্রুপ মিলে যায়, তাহলে অভিপ্রায় ফিল্টার মিলে যায় "false"যদি ইউআরআই আপেক্ষিক ফিল্টার গ্রুপ মেলে, অভিপ্রায় ফিল্টার মেলে না
-
- প্রবর্তিত:
- API স্তর 35
- এছাড়াও দেখুন:
-
<intent-filter>
<data>
- সিনট্যাক্স:
<uri-relative-filter-group android:allow=["true" | "false"]> <data ... /> ... </uri-relative-filter-group>
- এর মধ্যে রয়েছে:
-
<intent-filter> - থাকতে পারে:
-
<data> - বর্ণনা:
- সুনির্দিষ্ট
Intentম্যাচিং নিয়ম তৈরি করে যাতে URI ক্যোয়ারী প্যারামিটার এবং URI টুকরা অন্তর্ভুক্ত থাকতে পারে।android: allowঅ্যাট্রিবিউটের উপর নির্ভর করে নিয়মগুলি অন্তর্ভুক্তি ( অনুমতি ) নিয়ম বা বর্জন ( ব্লকিং ) নিয়ম হতে পারে। মিলিত নিয়মগুলিpath*,fragment*, এবংquery*বৈশিষ্ট্য দ্বারা নির্দিষ্ট করা হয়<data>উপাদানগুলির।ম্যাচিং
একটি 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>ট্যাগগুলি ORed হয়, যখন একটি<uri-relative-filter-group>এর ভিতরে<data>ট্যাগগুলি ANDed হয়৷নিম্নলিখিত উদাহরণ বিবেচনা করুন:
<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>ট্যাগ থাকতে হবে কারণ URI বৈশিষ্ট্যগুলি<intent-filter>স্তরে পারস্পরিকভাবে নির্ভরশীল:- যদি উদ্দেশ্য ফিল্টারের জন্য একটি
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>বর্জন নিয়মের বাইরে।সাধারণ ব্যবহারের ক্ষেত্রে
কল্পনা করুন আপনার কাছে URI
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?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>উপাদান রাখতে পারেন।অতিরিক্ত সম্পদ
উদ্দেশ্য ফিল্টারগুলি কীভাবে কাজ করে সে সম্পর্কে তথ্যের জন্য, কীভাবে অভিপ্রায় বস্তুগুলি ফিল্টারের সাথে মিলিত হয় তার নিয়মগুলি সহ, ইন্টেন্ট এবং ইনটেন্ট ফিল্টার এবং অভিপ্রায় ফিল্টারগুলি দেখুন৷
<uri-relative-filter-group>সম্পর্কে তথ্যের জন্য,UriRelativeFilterGroupএবংUriRelativeFilterদেখুন। - যদি উদ্দেশ্য ফিল্টারের জন্য একটি
- গুণাবলী:
-
android:allow - এই URI আপেক্ষিক ফিল্টার গ্রুপটি একটি বর্জন ( ব্লকিং ) নিয়মের পরিবর্তে একটি অন্তর্ভুক্তি ( অনুমতি দিন ) নিয়ম কিনা। ডিফল্ট মান হল
"true"।মান বর্ণনা "true"(ডিফল্ট)যদি URI আপেক্ষিক ফিল্টার গ্রুপ মিলে যায়, তাহলে অভিপ্রায় ফিল্টার মিলে যায় "false"যদি ইউআরআই আপেক্ষিক ফিল্টার গ্রুপ মেলে, অভিপ্রায় ফিল্টার মেলে না
-
- প্রবর্তিত:
- API স্তর 35
- এছাড়াও দেখুন:
-
<intent-filter>
<data>