<রিসিভার>

সিনট্যাক্স:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
এর মধ্যে অন্তর্ভুক্ত:
<application>
এতে থাকতে পারে:
<intent-filter>
<meta-data>
<property>
বর্ণনা:
অ্যাপ্লিকেশনটির একটি উপাদান হিসেবে একটি ব্রডকাস্ট রিসিভার, অর্থাৎ BroadcastReceiver সাবক্লাস, ঘোষণা করা হয়। ব্রডকাস্ট রিসিভারগুলো অ্যাপ্লিকেশনকে সিস্টেম বা অন্য অ্যাপ্লিকেশন দ্বারা ব্রডকাস্ট করা ইনটেন্ট গ্রহণ করতে সক্ষম করে, এমনকি যখন অ্যাপ্লিকেশনটির অন্যান্য উপাদানগুলো চালু থাকে না তখনও।

সিস্টেমের কাছে একটি ব্রডকাস্ট রিসিভারকে পরিচিত করার দুটি উপায় আছে। একটি হলো ম্যানিফেস্ট ফাইলে `this` এলিমেন্ট ব্যবহার করে এটিকে ডিক্লেয়ার করা। অন্যটি হলো কোডের মাধ্যমে ডাইনামিকভাবে রিসিভারটি তৈরি করে Context.registerReceiver() ` মেথড অথবা এর কোনো ওভারলোডেড ভার্সন ব্যবহার করে এটিকে রেজিস্টার করা।

ডাইনামিকভাবে রিসিভার তৈরি করার পদ্ধতি সম্পর্কে আরও তথ্যের জন্য, BroadcastReceiver ক্লাসের বিবরণ দেখুন।

যদি এই রিসিভারটি নন-সিস্টেম ব্রডকাস্ট পরিচালনা করে, তাহলে android:exported জন্য একটি মান নির্দিষ্ট করুন। যদি আপনি চান যে আপনার রিসিভারটি অন্যান্য অ্যাপ্লিকেশন থেকেও ব্রডকাস্ট গ্রহণ করতে সক্ষম হোক, তাহলে এই মানটি "true" সেট করুন, অথবা যদি আপনি চান যে আপনার রিসিভারটি শুধুমাত্র আপনার নিজের অ্যাপ থেকে ব্রডকাস্ট গ্রহণ করতে সক্ষম হোক, তাহলে "false"

আপনি যদি android:permission অ্যাট্রিবিউটটি আগে থেকেই ঘোষণা করে থাকেন, তাহলে সেটি সরানোর প্রয়োজন নেই।

সতর্কীকরণ: আপনার অ্যাপে কতগুলো ব্রডকাস্ট রিসিভার সেট করবেন তা সীমিত রাখুন। অতিরিক্ত ব্রডকাস্ট রিসিভার আপনার অ্যাপের পারফরম্যান্স এবং ব্যবহারকারীদের ডিভাইসের ব্যাটারি লাইফকে প্রভাবিত করতে পারে। ব্যাকগ্রাউন্ডের কাজ শিডিউল করার জন্য BroadcastReceiver ক্লাসের পরিবর্তে আপনি যে API-গুলো ব্যবহার করতে পারেন, সে সম্পর্কে আরও তথ্যের জন্য ব্যাকগ্রাউন্ড অপটিমাইজেশন দেখুন।

বৈশিষ্ট্য:
android:directBootAware

ব্রডকাস্ট রিসিভারটি ডিরেক্ট-বুট সচেতন কিনা, অর্থাৎ, ব্যবহারকারী ডিভাইসটি আনলক করার আগেই এটি চলতে পারে কিনা।

দ্রষ্টব্য: ডাইরেক্ট বুট চলাকালীন, আপনার অ্যাপ্লিকেশনের একটি ব্রডকাস্ট রিসিভার শুধুমাত্র ডিভাইস প্রোটেক্টেড স্টোরেজে সংরক্ষিত ডেটা অ্যাক্সেস করতে পারে।

ডিফল্ট মান হলো "false"

android:enabled
ব্রডকাস্ট রিসিভারটি সিস্টেম দ্বারা ইনস্ট্যানশিয়েট করা যাবে কি না। যদি করা যায় তবে এর মান "true" , এবং না গেলে "false" । ডিফল্ট মান হলো "true"

<application> এলিমেন্টের নিজস্ব একটি enabled অ্যাট্রিবিউট আছে যা ব্রডকাস্ট রিসিভার সহ অ্যাপ্লিকেশনের সমস্ত কম্পোনেন্টের ক্ষেত্রে প্রযোজ্য। ব্রডকাস্ট রিসিভারটি সক্রিয় হওয়ার জন্য <application> এবং <receiver> উভয় অ্যাট্রিবিউটের মানই "true" হতে হবে। যদি এর কোনো একটির মান "false" হয়, তবে এটি নিষ্ক্রিয় থাকে এবং ইনস্ট্যানশিয়েট করা যায় না।

android:exported
ব্রডকাস্ট রিসিভারটি তার অ্যাপ্লিকেশনের বাইরের নন-সিস্টেম উৎস থেকে বার্তা গ্রহণ করতে পারে কি না। যদি পারে, তবে এর উত্তর "true" , এবং না পারলে "false" হবে। যদি "false" , তবে ব্রডকাস্ট রিসিভারটি শুধুমাত্র সিস্টেম, একই অ্যাপ্লিকেশনের উপাদানসমূহ, অথবা একই ইউজার আইডিযুক্ত অ্যাপ্লিকেশনগুলো দ্বারা প্রেরিত বার্তাই গ্রহণ করবে।

অনির্দিষ্ট থাকলে, ডিফল্ট মানটি ব্রডকাস্ট রিসিভারে ইনটেন্ট ফিল্টার আছে কি না তার উপর নির্ভর করে। যদি রিসিভারে অন্তত একটি ইনটেন্ট ফিল্টার থাকে, তাহলে ডিফল্ট মান হয় "true" । অন্যথায়, ডিফল্ট মান হয় "false"

একটি ব্রডকাস্ট রিসিভারের বাহ্যিক সংস্পর্শ সীমিত করার জন্য এই অ্যাট্রিবিউটটিই একমাত্র উপায় নয়। কোন কোন বাহ্যিক সত্তা এটিকে বার্তা পাঠাতে পারবে, তা সীমিত করতে আপনি পারমিশনও ব্যবহার করতে পারেন। permission অ্যাট্রিবিউটটি দেখুন।

android:icon
ব্রডকাস্ট রিসিভারের প্রতিনিধিত্বকারী একটি আইকন। এই অ্যাট্রিবিউটটি ইমেজ ডেফিনিশন ধারণকারী একটি ড্রয়েবল রিসোর্সের রেফারেন্স হিসেবে সেট করা হয়। যদি এটি সেট করা না থাকে, তবে এর পরিবর্তে সম্পূর্ণ অ্যাপ্লিকেশনের জন্য নির্দিষ্ট আইকনটি ব্যবহৃত হয়। <application> এলিমেন্টের icon অ্যাট্রিবিউটটি দেখুন।

ব্রডকাস্ট রিসিভারের আইকনটি, তা এখানে সেট করা হোক বা <application> এলিমেন্টের মাধ্যমে, রিসিভারের সমস্ত ইনটেন্ট ফিল্টারের জন্যও ডিফল্ট আইকন হিসেবে কাজ করে। <intent-filter> এলিমেন্টের icon অ্যাট্রিবিউটটি দেখুন।

android:intentMatchingFlags

সিস্টেম কীভাবে আগত ইনটেন্টগুলোকে অ্যাপ কম্পোনেন্টগুলোর সাথে মেলাবে, তা সূক্ষ্মভাবে নিয়ন্ত্রণ করতে এই অ্যাট্রিবিউটটি ব্যবহার করুন। ডিফল্টরূপে, কোনো বিশেষ মেলানোর নিয়ম প্রয়োগ করা হয় না।

<receiver> ট্যাগে সেট করা মান <application> ট্যাগে সেট করা মানকে বাতিল করে দেয়।

মানটি অবশ্যই নিম্নলিখিত ফ্ল্যাগগুলির এক বা একাধিক হতে হবে, যা ' | ' দ্বারা পৃথক করা থাকবে:

পতাকা বর্ণনা
none আগত ইন্টেন্টগুলির জন্য সমস্ত বিশেষ ম্যাচিং নিয়ম নিষ্ক্রিয় করে। একাধিক ফ্ল্যাগ নির্দিষ্ট করার সময়, সাংঘর্ষিক মানগুলির সমাধান করার জন্য none ' ফ্ল্যাগটিকে অগ্রাধিকার দেওয়া হয়।
enforceIntentFilter

আগত ইন্টেন্টগুলির জন্য আরও কঠোর মিলকরণ প্রয়োগ করে:

  • সুস্পষ্ট ইনটেন্ট অবশ্যই টার্গেট কম্পোনেন্টের ইনটেন্ট ফিল্টারের সাথে মিলতে হবে।
  • অ্যাকশনবিহীন ইনটেন্টগুলো কোনো ইনটেন্ট ফিল্টারের সাথে মেলে না।
allowNullAction

অ্যাকশনবিহীন ইনটেন্টগুলোকেও ম্যাচ করার অনুমতি দিতে ম্যাচিং নিয়ম শিথিল করে। নিম্নলিখিত আচরণটি অর্জনের জন্য এই ফ্ল্যাগটি enforceIntentFilter সাথে একত্রে ব্যবহৃত হয়:

  • সুস্পষ্ট ইনটেন্ট অবশ্যই টার্গেট কম্পোনেন্টের ইনটেন্ট ফিল্টারের সাথে মিলতে হবে।
  • অ্যাকশনবিহীন ইনটেন্টগুলো যেকোনো ইনটেন্ট ফিল্টারের সাথে মেলানো যেতে পারে।

আরও তথ্যের জন্য, Android 16 (API লেভেল 36)-এর আচরণগত পরিবর্তন সম্পর্কিত Safer Intents বিভাগটি দেখুন।

android:label
ব্রডকাস্ট রিসিভারের জন্য একটি ব্যবহারকারী-পাঠযোগ্য লেবেল। যদি এই অ্যাট্রিবিউটটি সেট করা না থাকে, তবে এর পরিবর্তে সম্পূর্ণ অ্যাপ্লিকেশনটির জন্য সেট করা লেবেলটি ব্যবহৃত হয়। <application> এলিমেন্টের label অ্যাট্রিবিউটটি দেখুন।

ব্রডকাস্ট রিসিভারের লেবেল, যা এখানে অথবা <application> এলিমেন্টের মাধ্যমে সেট করা হোক না কেন, সেটিই রিসিভারের সমস্ত ইনটেন্ট ফিল্টারের ডিফল্ট লেবেল হিসেবেও কাজ করে। <intent-filter> এলিমেন্টের label অ্যাট্রিবিউটটি দেখুন।

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

android:name
The name of the class that implements the broadcast receiver, a subclass of BroadcastReceiver . This is a fully qualified class name, such as "com.example.project.ReportReceiver" . However, as a shorthand, if the first character of the name is a period, for example, ".ReportReceiver" , it is appended to the package name specified in the <manifest> element.

একবার আপনার অ্যাপ্লিকেশনটি প্রকাশ করার পর, android:exported ="false" সেট না করা পর্যন্ত এই নামটি পরিবর্তন করবেন না

কোনো পূর্বনির্ধারিত নাম নেই। নামটি অবশ্যই উল্লেখ করতে হবে।

android:permission
এমন একটি অনুমতির নাম যা ব্রডকাস্টারদের ব্রডকাস্ট রিসিভারের কাছে বার্তা পাঠানোর জন্য প্রয়োজন হয়। যদি এই অ্যাট্রিবিউটটি সেট করা না থাকে, তাহলে <application> এলিমেন্টের permission অ্যাট্রিবিউট দ্বারা সেট করা অনুমতিটি ব্রডকাস্ট রিসিভারের ক্ষেত্রে প্রযোজ্য হয়। যদি কোনো অ্যাট্রিবিউটই সেট করা না থাকে, তাহলে রিসিভারটি কোনো অনুমতি দ্বারা সুরক্ষিত থাকে না।

অনুমতি সম্পর্কে আরও তথ্যের জন্য, অ্যাপ ম্যানিফেস্ট ওভারভিউ এবং নিরাপত্তা টিপস- এর অনুমতি বিভাগটি দেখুন।

android:process

যে প্রসেসে ব্রডকাস্ট রিসিভার চলে, তার নাম। সাধারণত, একটি অ্যাপ্লিকেশনের সমস্ত উপাদান অ্যাপ্লিকেশনটির জন্য তৈরি ডিফল্ট প্রসেসে চলে। এর নাম অ্যাপ্লিকেশন প্যাকেজের নামের মতোই হয়।

<application> এলিমেন্টের process অ্যাট্রিবিউটটি সমস্ত কম্পোনেন্টের জন্য একটি ভিন্ন ডিফল্ট মান নির্ধারণ করতে পারে। কিন্তু প্রতিটি কম্পোনেন্ট তার নিজস্ব process অ্যাট্রিবিউটের মাধ্যমে সেই ডিফল্ট মানকে ওভাররাইড করতে পারে, যা আপনাকে আপনার অ্যাপ্লিকেশনটিকে একাধিক প্রসেসে ভাগ করে দেওয়ার সুযোগ দেয়।

এই অ্যাট্রিবিউটে নির্ধারিত নামটি যদি কোলন ( : দিয়ে শুরু হয়, তাহলে প্রয়োজনের সময় অ্যাপ্লিকেশনটির নিজস্ব একটি নতুন প্রসেস তৈরি করা হয় এবং ব্রডকাস্ট রিসিভারটি সেই প্রসেসে চলে।

যদি প্রসেসের নামটি ছোট হাতের অক্ষর দিয়ে শুরু হয়, তবে রিসিভারটি সেই নামের একটি গ্লোবাল প্রসেসে চলে, যদি তার সেই অনুমতি থাকে। এর ফলে বিভিন্ন অ্যাপ্লিকেশনের কম্পোনেন্টগুলো একটি প্রসেস শেয়ার করতে পারে, যা রিসোর্স ব্যবহার কমিয়ে দেয়।

এতে প্রবর্তন করা হয়েছিল:
এপিআই স্তর ১