<ডেটা>

বাক্য গঠন:
যদি ডেটা ট্যাগটি একটি <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 অ্যাট্রিবিউট, একটি URI, অথবা একটি ডেটা টাইপ এবং একটি URI উভয়ই ব্যবহার করে। একটি URI এর প্রতিটি অংশের জন্য পৃথক অ্যাট্রিবিউট দ্বারা নির্দিষ্ট করা হয়:

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

এই বৈশিষ্ট্যগুলি যা URI ফর্ম্যাট নির্দিষ্ট করে তা ঐচ্ছিক, তবে পারস্পরিকভাবে নির্ভরশীল:

  • যদি ইনটেন্ট ফিল্টারের জন্য কোনও scheme নির্দিষ্ট না করা থাকে, তাহলে অন্যান্য সমস্ত URI বৈশিষ্ট্য উপেক্ষা করা হয়।
  • যদি ফিল্টারের জন্য একটি 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>

আপনি <intent-filter> এর ভিতরে যেকোনো সংখ্যক <data> উপাদান রাখতে পারেন যাতে এটি একাধিক ডেটা অপশন পায়। এর কোনও অ্যাট্রিবিউটেরই ডিফল্ট মান নেই।

ইন্টেন্ট ফিল্টার কীভাবে কাজ করে সে সম্পর্কে তথ্যের জন্য, ফিল্টারের সাথে ইন্টেন্ট অবজেক্টগুলি কীভাবে মেলানো হয় তার নিয়মগুলি সহ, ম্যানিফেস্ট ফাইল ওভারভিউতে ইন্টেন্ট এবং ইন্টেন্ট ফিল্টার এবং ইন্টেন্ট ফিল্টার বিভাগটি দেখুন।

বৈশিষ্ট্য:
android:scheme
একটি URI-এর স্কিমের অংশ। এটি একটি URI নির্দিষ্ট করার জন্য সর্বনিম্ন প্রয়োজনীয় অ্যাট্রিবিউট। ফিল্টারের জন্য কমপক্ষে একটি scheme অ্যাট্রিবিউট সেট করতে হবে, অন্যথায় অন্য কোনও URI অ্যাট্রিবিউট অর্থপূর্ণ হবে না।

একটি স্কিম ট্রেলিং কোলন ছাড়াই নির্দিষ্ট করা হয়, যেমন http http:

যদি ফিল্টারটিতে একটি ডেটা টাইপ সেট থাকে ( mimeType অ্যাট্রিবিউট ব্যবহার করে) কিন্তু কোনও স্কিম না থাকে, তাহলে content: এবং file: স্কিম ধরে নেওয়া হয়।

দ্রষ্টব্য : অ্যান্ড্রয়েড ফ্রেমওয়ার্কে স্কিম ম্যাচিং কেস-সংবেদনশীল, RFC-এর মতো নয়। ফলস্বরূপ, সর্বদা ছোট হাতের অক্ষর ব্যবহার করে স্কিমগুলি নির্দিষ্ট করুন।

android:host
একটি URI অথরিটির হোস্ট অংশ। ফিল্টারের জন্য একটি scheme অ্যাট্রিবিউট নির্দিষ্ট না করা পর্যন্ত এই অ্যাট্রিবিউট অর্থহীন। একাধিক সাবডোমেন মেলাতে, হোস্টে শূন্য বা তার বেশি অক্ষর মেলাতে একটি তারকাচিহ্ন ( * ) ব্যবহার করুন। উদাহরণস্বরূপ, হোস্ট *.google.com www.google.com , .google.com , এবং developer.google.com সাথে মেলে।

হোস্ট অ্যাট্রিবিউটের প্রথম অক্ষরটি অবশ্যই তারকাচিহ্ন হতে হবে। উদাহরণস্বরূপ, হোস্ট google.co.* অবৈধ, কারণ তারকাচিহ্ন ওয়াইল্ডকার্ডটি প্রথম অক্ষর নয়।

দ্রষ্টব্য : অ্যান্ড্রয়েড ফ্রেমওয়ার্কে হোস্ট নেম ম্যাচিং কেস-সংবেদনশীল, আনুষ্ঠানিক RFC-এর মতো নয়। ফলস্বরূপ, সর্বদা ছোট হাতের অক্ষর ব্যবহার করে হোস্ট নেম নির্দিষ্ট করুন।

android:port
একটি URI অথরিটির পোর্ট অংশ। এই অ্যাট্রিবিউটটি তখনই অর্থবহ হবে যদি ফিল্টারের জন্য scheme এবং host অ্যাট্রিবিউটগুলিও নির্দিষ্ট করা থাকে।
android:path
android:pathPrefix
android:pathSuffix
android:pathPattern
android:pathAdvancedPattern
একটি URI এর পাথ অংশ, যা / দিয়ে শুরু হতে হবে। path অ্যাট্রিবিউটটি একটি সম্পূর্ণ পাথ নির্দিষ্ট করে যা একটি Intent অবজেক্টের সম্পূর্ণ পাথের সাথে মিলে যায়। pathPrefix অ্যাট্রিবিউটটি একটি আংশিক পাথ নির্দিষ্ট করে যা শুধুমাত্র Intent অবজেক্টের পাথের প্রাথমিক অংশের সাথে মিলে যায়।

pathSuffix অ্যাট্রিবিউটটি Intent অবজেক্টের পাথের শেষ অংশের সাথে হুবহু মিলে যায়, এবং এই অ্যাট্রিবিউটটি / অক্ষর দিয়ে শুরু হতে হবে না।

pathPattern অ্যাট্রিবিউটটি একটি সম্পূর্ণ পাথ নির্দিষ্ট করে যা Intent অবজেক্টের সম্পূর্ণ পাথের সাথে মিলে যায়, তবে এতে নিম্নলিখিত ওয়াইল্ডকার্ড থাকতে পারে:

  • একটি পিরিয়ড ( . ) যেকোনো অক্ষরের সাথে মিলে যায়।
  • একটি তারকাচিহ্ন ( * ) শূন্যের একটি ক্রমকে তৎক্ষণাৎ পূর্ববর্তী অক্ষরের অনেক ঘটনার সাথে মেলায়।
  • একটি তারকাচিহ্ন ( .* ) এর পরে একটি পিরিয়ড শূন্যের যেকোনো ক্রমকে অনেক অক্ষরের সাথে মেলায়।

pathAdvancedPattern অ্যাট্রিবিউটটি একটি সম্পূর্ণ পাথ নির্দিষ্ট করে, যা Intent অবজেক্টের সম্পূর্ণ পাথের সাথে মিলে যায় এবং নিম্নলিখিত regex-সদৃশ প্যাটার্নগুলিকে সমর্থন করে:

  • একটি পিরিয়ড ( . ) যেকোনো অক্ষরের সাথে মিলে যায়।
  • একটি সেট ( [...] ) অক্ষরের পরিসরের সাথে মেলে। উদাহরণস্বরূপ, [0-5] 0 থেকে 5 পর্যন্ত একটি একক সংখ্যার সাথে মেলে কিন্তু 6 থেকে 9 পর্যন্ত নয় [a-zA-Z] যেকোনো অক্ষরের সাথে মেলে, কেস নির্বিশেষে। সেটগুলি "not" ^ সংশোধককেও সমর্থন করে।
  • তারকাচিহ্ন ( * ) সংশোধকটি পূর্ববর্তী প্যাটার্নের সাথে শূন্য বা তার বেশি বার মেলে।
  • প্লাস ( + ) মডিফায়ারটি পূর্ববর্তী প্যাটার্নের সাথে এক বা একাধিক বার মেলে।
  • পরিসর ( {...} ) মডিফায়ার একটি প্যাটার্ন কতবার মিলতে পারে তা নির্দিষ্ট করে।
pathAdvancedPattern matcher হল একটি মূল্যায়ন বাস্তবায়ন যেখানে কোনও ব্যাকট্র্যাকিং সমর্থন ছাড়াই রিয়েল টাইমে প্যাটার্নের বিপরীতে ম্যাচিং করা হয়।

যেহেতু XML থেকে স্ট্রিং পড়ার সময় \ একটি এস্কেপ ক্যারেক্টার হিসেবে ব্যবহৃত হয়, তাই এটিকে প্যাটার্ন হিসেবে পার্স করার আগে, আপনাকে ডাবল-এস্কেপ করতে হবে। উদাহরণস্বরূপ, একটি আক্ষরিক * লেখা হয় \\* হিসাবে, এবং একটি আক্ষরিক \ লেখা হয় \\\\ হিসাবে। এটি জাভা কোডে স্ট্রিং তৈরি করার সময় আপনি যা লেখেন তার মতো।

এই পাঁচ ধরণের প্যাটার্ন সম্পর্কে আরও তথ্যের জন্য, PatternMatcher ক্লাসে PATTERN_LITERAL , PATTERN_PREFIX , PATTERN_SIMPLE_GLOB , PATTERN_SUFFIX , এবং PATTERN_ADVANCED_GLOB এর বর্ণনা দেখুন।

এই বৈশিষ্ট্যগুলি কেবল তখনই অর্থবহ হবে যদি ফিল্টারের জন্য scheme এবং host বৈশিষ্ট্যগুলিও নির্দিষ্ট করা থাকে।

API লেভেল 31-এ pathSuffix এবং pathAdvancedPattern চালু করা হয়েছিল।

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

একটি URI ফ্র্যাগমেন্টের জন্য একটি ম্যাচার। # প্রিফিক্স অন্তর্ভুক্ত করবেন না। প্রতিটি অ্যাট্রিবিউটের অর্থ এবং অনুমোদিত প্যাটার্নের জন্য উপরে দেখুন।

সাধারণত URI এনকোড করা অক্ষরগুলির সাথে মেলানোর জন্য, অ্যাট্রিবিউট মানের মধ্যে raw (nonencoded) ফর্মটি অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, <data android:fragment="test!" /> #test! এবং #test%21 সাথে মেলে।

API লেভেল ৩৫-এ প্রবর্তিত।

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

একটি URI কোয়েরি প্যারামিটারের (এবং ঐচ্ছিকভাবে, একটি মান) জন্য একটি ম্যাচার। উদাহরণস্বরূপ, আপনি ?param=value দিয়ে শেষ হওয়া URI গুলিকে <data android:query="param=value" /> দিয়ে মেলাতে পারেন। ? উপসর্গটি অন্তর্ভুক্ত করবেন না। প্রতিটি অ্যাট্রিবিউটে অনুমোদিত অর্থ এবং প্যাটার্নের জন্য উপরে দেখুন।

সাধারণত URI-এনকোডেড অক্ষরগুলির সাথে মেলানোর জন্য, অ্যাট্রিবিউট মানের মধ্যে raw (nonencoded) ফর্মটি অন্তর্ভুক্ত করুন। উদাহরণস্বরূপ, <data android:query="test!" /> ?test! এবং ?test%21 সাথে মেলে।

API লেভেল ৩৫-এ প্রবর্তিত।

android:mimeType
একটি MIME মিডিয়া টাইপ, যেমন image/jpeg অথবা audio/mpeg4-generic । সাবটাইপটি তারকাচিহ্নের ওয়াইল্ডকার্ড ( * ) হতে পারে যা নির্দেশ করে যে কোনও সাবটাইপ মিলছে।

একটি ইন্টেন্ট ফিল্টারের ক্ষেত্রে এটি সাধারণ যে এটি এমন একটি <data> উপাদান ঘোষণা করে যার মধ্যে শুধুমাত্র android:mimeType অ্যাট্রিবিউট থাকে।

দ্রষ্টব্য : অ্যান্ড্রয়েড ফ্রেমওয়ার্কে MIME টাইপ ম্যাচিং কেস-সংবেদনশীল, আনুষ্ঠানিক RFC MIME টাইপের বিপরীতে। ফলস্বরূপ, সর্বদা ছোট হাতের অক্ষর ব্যবহার করে MIME টাইপ নির্দিষ্ট করুন।

প্রবর্তিত:
API লেভেল ১
আরও দেখুন:
<action>
<category>