<रिसीवर>

सिंटैक्स:
<receiver android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:icon="drawable resource"
          android:label="string resource"
          android:name="string"
          android:permission="string"
          android:process="string" >
    ...
</receiver>
इसमें शामिल:
<application>
इसमें ये एलिमेंट शामिल हो सकते हैं:
<intent-filter>
<meta-data>
<property>
विवरण:
ब्रॉडकास्ट रिसीवर, BroadcastReceiver सब-क्लास को ऐप्लिकेशन के कॉम्पोनेंट के तौर पर दिखाता है. ब्रॉडकास्ट रिसीवर की मदद से, ऐप्लिकेशन को ऐसे इंटेंट मिल सकते हैं जिन्हें सिस्टम या अन्य ऐप्लिकेशन ब्रॉडकास्ट करते हैं. भले ही, ऐप्लिकेशन के अन्य कॉम्पोनेंट काम न कर रहे हों.

ब्रॉडकास्ट रिसीवर को सिस्टम के लिए उपलब्ध कराने के दो तरीके हैं. पहला तरीका यह है कि इसे इस एलिमेंट के साथ, मैनिफ़ेस्ट फ़ाइल में दिखाया जाए. दूसरा तरीका यह है कि कोड में डाइनैमिक तरीके से रिसीवर बनाया जाए और इसे Context.registerReceiver() तरीके या इसके ओवरलोड किए गए किसी वर्शन के साथ रजिस्टर किया जाए.

रिसीवर को डाइनैमिक तरीके से बनाने के बारे में ज़्यादा जानने के लिए, BroadcastReceiver क्लास का ब्यौरा देखें.

अगर यह रिसीवर, सिस्टम के ब्रॉडकास्ट के अलावा अन्य ब्रॉडकास्ट को भी हैंडल करता है, तो android:exported के लिए कोई वैल्यू तय करें. अगर आपको यह तय करना है कि आपका रिसीवर, अन्य ऐप्लिकेशन से ब्रॉडकास्ट रिसीव कर सकता है, तो इस वैल्यू को "true" पर सेट करें. वहीं, अगर आपको यह तय करना है कि आपका रिसीवर सिर्फ़ आपके ऐप्लिकेशन से ब्रॉडकास्ट रिसीव कर सकता है, तो इस वैल्यू को "false" पर सेट करें.

अगर आपने android:permission एट्रिब्यूट को पहले ही तय कर दिया है, तो इसे हटाने की ज़रूरत नहीं है.

चेतावनी: अपने ऐप्लिकेशन में ब्रॉडकास्ट रिसीवर की संख्या सीमित करें. बहुत ज़्यादा ब्रॉडकास्ट रिसीवर होने से, आपके ऐप्लिकेशन की परफ़ॉर्मेंस और उपयोगकर्ताओं के डिवाइस की बैटरी लाइफ़ पर असर पड़ सकता है. बैकग्राउंड में होने वाले काम को शेड्यूल करने के लिए, BroadcastReceiver क्लास के बजाय इस्तेमाल किए जा सकने वाले एपीआई के बारे में ज़्यादा जानने के लिए, बैकग्राउंड ऑप्टिमाइज़ेशन लेख पढ़ें.

एट्रिब्यूट:
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:label
यह ब्रॉडकास्ट रिसीवर के लिए, उपयोगकर्ता के हिसाब से पढ़ने लायक लेबल है. अगर इस एट्रिब्यूट को सेट नहीं किया जाता है, तो इसके बजाय पूरे ऐप्लिकेशन के लिए सेट किया गया लेबल इस्तेमाल किया जाता है. <application> एलिमेंट का label एट्रिब्यूट देखें.

ब्रॉडकास्ट रिसीवर का लेबल, चाहे इसे यहां सेट किया गया हो या <application> एलिमेंट से, रिसीवर के सभी इंटेंट फ़िल्टर के लिए डिफ़ॉल्ट लेबल भी होता है. <intent-filter> एलिमेंट का label एट्रिब्यूट देखें.

लेबल को स्ट्रिंग रिसॉर्स के रेफ़रंस के तौर पर सेट किया जाता है, ताकि इसे उपयोगकर्ता इंटरफ़ेस में मौजूद अन्य स्ट्रिंग की तरह स्थानीय भाषा में बदला जा सके. हालांकि, ऐप्लिकेशन डेवलप करते समय, इसे रॉ स्ट्रिंग के तौर पर भी सेट किया जा सकता है.

android:name
यह उस क्लास का नाम है जो ब्रॉडकास्ट रिसीवर को लागू करती है. यह BroadcastReceiver का सबक्लास है. यह पूरी तरह क्वालिफ़ाइड क्लास का नाम है. जैसे, "com.example.project.ReportReceiver". हालांकि, शॉर्टहैंड के तौर पर, अगर नाम का पहला वर्ण पीरियड है, तो इसे ".ReportReceiver"एलिमेंट में तय किए गए पैकेज के नाम में जोड़ा जाता है. <manifest>

अपने ऐप्लिकेशन को पब्लिश करने के बाद, इस नाम में बदलाव न करें. हालांकि, अगर आपने android:exported="false" सेट किया है, तो नाम में बदलाव किया जा सकता है.

कोई डिफ़ॉल्ट वैल्यू नहीं है. नाम तय करना ज़रूरी है.

android:permission
यह उस अनुमति का नाम है जिसकी ज़रूरत ब्रॉडकास्टर को, ब्रॉडकास्ट रिसीवर को मैसेज भेजने के लिए होती है. अगर इस एट्रिब्यूट को सेट नहीं किया जाता है, तो ब्रॉडकास्ट रिसीवर पर <application> एलिमेंट के permission एट्रिब्यूट से सेट की गई अनुमति लागू होती है. अगर दोनों एट्रिब्यूट सेट नहीं किए जाते हैं, तो रिसीवर को अनुमति से सुरक्षा नहीं मिलती.

अनुमतियों के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन मैनिफ़ेस्ट की खास जानकारी में अनुमतियां सेक्शन और सुरक्षा से जुड़े सुझावलेख पढ़ें.

android:process
यह उस प्रोसेस का नाम है जिसमें ब्रॉडकास्ट रिसीवर काम करता है. आम तौर पर, ऐप्लिकेशन के सभी कॉम्पोनेंट, ऐप्लिकेशन के लिए बनाई गई डिफ़ॉल्ट प्रोसेस में काम करते हैं. इसका नाम, ऐप्लिकेशन पैकेज के नाम जैसा ही होता है.

The <application> एलिमेंट का process एट्रिब्यूट, सभी कॉम्पोनेंट के लिए अलग डिफ़ॉल्ट सेट कर सकता है. हालांकि, हर कॉम्पोनेंट, अपने process एट्रिब्यूट से डिफ़ॉल्ट को ओवरराइड कर सकता है. इससे आपके ऐप्लिकेशन को एक से ज़्यादा प्रोसेस में फैलाया जा सकता है.

अगर इस एट्रिब्यूट को असाइन किया गया नाम, कॉलन (:) से शुरू होता है, तो ज़रूरत पड़ने पर ऐप्लिकेशन के लिए एक नई निजी प्रोसेस बनाई जाती है. साथ ही, ब्रॉडकास्ट रिसीवर उस प्रोसेस में काम करता है.

अगर प्रोसेस का नाम, छोटे अक्षर से शुरू होता है, तो रिसीवर उस नाम की ग्लोबल प्रोसेस में काम करता है. हालांकि, इसके लिए उसके पास अनुमति होनी चाहिए. इससे अलग-अलग ऐप्लिकेशन में मौजूद कॉम्पोनेंट, एक प्रोसेस शेयर कर पाते हैं. इससे रिसॉर्स का इस्तेमाल कम होता है.

पहली बार इसमें दिखाया गया:
एपीआई लेवल 1