Android में भूमिकाएं

भूमिका, सिस्टम का एक यूनीक नाम होता है, जो कुछ अनुमतियों और खास अधिकारों से जुड़ा होता है. ऐप्लिकेशन, Android API की मदद से कुछ भूमिकाओं को होल्ड करने का अनुरोध कर सकते हैं. खास तौर पर, RoleManager क्लास में शामिल होने के तरीकों का इस्तेमाल करके.

उपलब्ध भूमिकाओं और उनसे जुड़ी ज़रूरी शर्तों के बारे में जानने के लिए, यह सूची देखें.

भूमिका ज़रूरी शर्तें
असिस्टेंट कम से कम एक:
  • ऐप्लिकेशन में एक ऐसी गतिविधि है जो असिस्ट क्लिक/इंप्रेशन से जुड़ी कार्रवाइयां करती है. इन कार्रवाइयों में, उपयोगकर्ता के सहायता के अनुरोध के समय उसके कॉन्टेक्स्ट के बारे में जानकारी दी जाती है (उदाहरण के लिए, मौजूदा फ़ोरग्राउंड ऐप्लिकेशन के पैकेज का नाम और उससे जुड़ी जानकारी).
  • ऐप्लिकेशन के पास वॉइस इंटरैक्शन की हमेशा चालू रहने वाली सेवा है, जो android.permission.BIND_VOICE_INTERACTION की अनुमति के तहत काम करती है. यह आवाज़ की पहचान कर सकती है और वॉइस इंटरैक्शन के ऐक्टिव सेशन होस्ट कर सकती है. इसके अलावा, ऐप्लिकेशन में एक साफ़ फ़्लैग भी दिया गया है, जिससे पता चलता है कि इस सेवा की मदद से कार्रवाई की जा सकती है.
ब्राउज़र सभी:
  • ऐप्लिकेशन में कोई ऐसी गतिविधि मौजूद है जिसे इंप्लिसिट इंटेंट वाले अनुरोधों के ज़रिए शुरू किया जा सकता है. इस तरह के अनुरोध के ज़रिए, http:// पते से जुड़ा वेब पेज दिखता है.
  • ऐप्लिकेशन को लिंक के बीच नेविगेशन मैनेज करना होगा. इसका मतलब है कि अगर उपयोगकर्ता किसी वेब पेज पर जाकर टेक्स्ट में दिए गए http:// पते पर क्लिक करता है, तो ऐप्लिकेशन, चुने गए लिंक से जुड़ा कॉन्टेंट दिखाने के लिए, उपयोगकर्ता की अलग से अनुमति नहीं देगा.
  • ऐप्लिकेशन के लिए यह ज़रूरी है कि वह डिवाइस के मौजूदा जियोलोकेशन की जानकारी वेब पेजों पर तब उपलब्ध कराए, जब उस ऐप्लिकेशन को ऐक्सेस करने का अनुरोध किया जाए और उपयोगकर्ता उसे मंज़ूरी दे.
डायलर सभी:
  • इस ऐप्लिकेशन में कोई ऐसी गतिविधि मौजूद है जिसे इंप्लिसिट इंटेंट वाले अनुरोधों के ज़रिए शुरू किया जा सकता है. इससे, डिवाइस के कॉल के दौरान होने के दौरान, कॉल के दौरान यूज़र इंटरफ़ेस मिलता है.
  • ऐप्लिकेशन, उपयोगकर्ता को इनकमिंग कॉल के इंटेंट मैनेज कर सकता है, कॉल से जुड़ी जानकारी (उदाहरण के लिए, कॉल करने वाले का फ़ोन नंबर) दिखा सकता है और उपयोगकर्ता को कॉल का जवाब देने या उसे अस्वीकार करने की अनुमति दे सकता है.
  • यह ऐप्लिकेशन, उपयोगकर्ता को कॉल करने और कॉल का इतिहास देखने की सुविधा देता है.
मैसेज (एसएमएस) सभी:
  • यह ऐप्लिकेशन एसएमएस ऐप्लिकेशन से जुड़ी सभी ज़रूरी शर्तों को पूरा करता है.
  • ऐप्लिकेशन में कोई ऐसी गतिविधि मौजूद है जिसे इंप्लिसिट इंटेंट रिक्वेस्ट के ज़रिए शुरू किया जा सकता है. इससे ऐप्लिकेशन किसी फ़ोन नंबर पर मैसेज भेज सकता है.
  • ऐप्लिकेशन में एक ऐसी सेवा मौजूद है जो android.permission.SEND_RESPOND_VIA_MESSAGE की अनुमति से जुड़ी होती है और इंप्लिसिट इंटेंट की वजह से इसे चालू नहीं किया जा सकता. इस सेवा की मदद से, उपयोगकर्ता के इनकमिंग कॉल के दौरान मैसेज का जवाब देने का विकल्प चुनने पर, Phone ऐप्लिकेशन से मिलने वाले मैसेज को डिलीवर किया जा सकता है. यह ऐप्लिकेशन अपने मैसेजिंग सिस्टम से मैसेज डिलीवर कर सकता है.
  • इस ऐप्लिकेशन में दो ब्रॉडकास्ट रिसीवर हैं, जिनमें से एक android.permission.BROADCAST_SMS अनुमति से और दूसरा android.permission.BROADCAST_WAP_PUSH अनुमति से गेट किया गया है. ये डिवाइस पर भेजे गए मैसेज वाले एसएमएस और मल्टीमीडिया मैसेज (एमएमएस) सुन सकते हैं. इसके बाद, एसएमएस की सेवा देने वाली कंपनी को मैसेज लिखने और उपयोगकर्ताओं को सूचना देने की ज़िम्मेदारी ऐप्लिकेशन की होती है.
आपातकालीन स्थिति सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • ऐप्लिकेशन में ऐसी गतिविधि है जो उपयोगकर्ता की आपातकालीन जानकारी दिखाती है. इमरजेंसी डायलर गतिविधि पर दिए गए आपातकालीन बटन का इस्तेमाल करके, कोई भी व्यक्ति इस स्क्रीन पर जा सकता है.
घर इस ऐप्लिकेशन में कोई ऐसी गतिविधि है जो उपयोगकर्ता के होम बटन दबाने पर होम स्क्रीन को लॉन्च कर सकती है. होम स्क्रीन पर बटन या हाथ के जेस्चर (उदाहरण के लिए, सभी ऐप्लिकेशन देखने के लिए ऊपर की ओर स्वाइप करना) पर आधारित ऐप्लिकेशन आइकॉन, विजेट, और सहायता नेविगेशन दिखना चाहिए.
CALL_REDIRECTION ऐप्लिकेशन में एक ऐसी सेवा है जो android.permission.BIND_CALL_REDIRECTION_SERVICE की अनुमति से सुरक्षित है. इस सेवा को टेलीकॉम फ़्रेमवर्क के साथ जोड़ा जा सकता है. सेवा को टेलीकॉम फ़्रेमवर्क से आउटगोइंग फ़ोन नंबर मिलता है. यह इनमें से कोई एक काम करती है:
  • कॉल को उसी स्थिति में रखने की अनुमति दें.
  • किसी प्रॉक्सी नंबर के ज़रिए रूट करने के लिए आउटगोइंग नंबर बदलें.
  • कॉल रद्द करें.
कॉल स्क्रीन करने की सुविधा ऐप्लिकेशन में एक ऐसी सेवा है जो android.permission.BIND_SCREENING_SERVICE की अनुमति से जुड़ी होती है. यह दो काम करती है:
  1. कॉल ब्लॉक करना/स्क्रीन करना: सेवा यह चुन सकती है कि कौनसे कॉल फ़ोन पर डायलर ऐप्लिकेशन पर भेजे जाएं (और डीएनडी/वॉल्यूम के हिसाब से रिंग किए जाएं) और कौनसे कॉल बिना आवाज़ के वॉइसमेल पर भेजे जाएं.
  2. कॉल की पहचान: सेवा, यूज़र इंटरफ़ेस के ज़रिए कॉल के बारे में जानकारी पहचान सकती है और उसे दिखा सकती है.
system_GALLERY सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन, उपयोगकर्ताओं को ऐसा यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराता है जिसकी मदद से, वे अपने वीडियो और इमेज को सेव, व्यवस्थित, और दिखा सकते हैं.
सिस्टम_ऑटोमोटीव_क्लस्टर सभी:
  • यह ऐप्लिकेशन, Automotive पर काम करने वाला एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • इस ऐप्लिकेशन में, उपयोगकर्ताओं को ऑटोमोटिव क्लस्टर की डिसप्ले सुविधा उपलब्ध कराई गई है, जो आम तौर पर स्टीयरिंग व्हील के पास होती है. इस ऐप्लिकेशन की मदद से लोग, फ़ोन कॉल का जवाब दे सकते हैं. साथ ही, वे संपर्क सूचियों और कॉल लॉग को भी ऐक्सेस कर सकते हैं.
COMPANION_DEVICE_watch ऐप्लिकेशन, CompanionDeviceManager क्लास से मिले एपीआई का इस्तेमाल करके, स्मार्टवॉच के लिए उपलब्ध डिवाइस से कनेक्ट करने और उसे मैनेज करने का अनुरोध कर सकता है. ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के ज़रिए स्मार्टवॉच और ऐप्लिकेशन को कनेक्ट करने के बाद, उपयोगकर्ता अपनी स्मार्टवॉच को ऐप्लिकेशन से मैनेज कर सकते हैं. इसमें संपर्कों और कैलेंडर को सिंक करने के साथ-साथ सूचनाओं और फ़ोन कॉल को मैनेज करना भी शामिल है.
system_autoMOTIVE_PROJECTION सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • इस ऐप्लिकेशन की मदद से, फ़ोन की स्क्रीन को वाहन में डिसप्ले के तौर पर दिखाया जा सकता है. यह ड्राइवरों को Android फ़ोन पर ऐप्लिकेशन ऐक्सेस और कंट्रोल करने की अनुमति देता है. इसमें संगीत, नेविगेशन, फ़ोन कॉल, और Google Search जैसे ऐप्लिकेशन ऐक्सेस और कंट्रोल किए जा सकते हैं. इसके लिए, गाड़ी में इनपुट तरीकों का इस्तेमाल किया जाता है. जैसे, टच, स्टीयरिंग व्हील कंट्रोल, और बोलकर दिए जाने वाले निर्देश.
सिस्टम एसएचईएलएल सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है, जिसे Process.SHELL_UID यूआईडी असाइन किया गया है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन, कमांड-लाइन लेवल पर काम करने वाला इंटरफ़ेस उपलब्ध कराता है, ताकि उपयोगकर्ता Android OS के साथ इंटरैक्ट कर सकें. उदाहरण के लिए, किसी फ़ोल्डर का कॉन्टेंट दिखाना या ऐप्लिकेशन लॉन्च करना. शेल निर्देशों को ऐप्लिकेशन की मदद से (ज़रूरी अनुमतियां दी गई होने पर) या ADB टूल से प्रोग्राम के हिसाब से एक्ज़ीक्यूट किया जा सकता है.
सिस्टम संपर्क सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन, उपयोगकर्ताओं को अपने संपर्क मैनेज करने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराता है. उदाहरण के लिए, किसी संपर्क को देखना, शेयर करना, जोड़ना, हटाना या खोजना. जब उपयोगकर्ता ऐप्लिकेशन से अपने संपर्कों को अपडेट करता है, तो यह ऐप्लिकेशन संपर्क की सेवा देने वाली कंपनी को अपडेट करता है. उपयोगकर्ता, ऐप्लिकेशन से अपने संपर्कों को कॉल कर सकते हैं, ईमेल भेज सकते हैं या उन्हें मैसेज भेज सकते हैं.
सिस्टम_SPEECH_RECOGNIZER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन एक ऐसी सेवा उपलब्ध कराता है जो बोली पहचानने की सुविधा देती है.
  • जब बोली की पहचान करने के लिए ऐप्लिकेशन को किसी दूसरे ऐप्लिकेशन से लाइव माइक्रोफ़ोन स्ट्रीम मिलती हैं, तो वह माइक्रोफ़ोन के इस्तेमाल का डेटा कॉल करने वाले ऐप्लिकेशन को सही ढंग से एट्रिब्यूट करता है. साथ ही, ऐप्लिकेशन की कार्रवाई से जुड़े आंकड़ों को उसी हिसाब से अपडेट करता है.
सिस्टम_वाई-फ़ाई_COEX_MANAGER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • इस ऐप्लिकेशन में एक ऐसी सेवा है जो डाइनैमिक तौर पर वाई-फ़ाई चैनलों की सूची सेट करती है. साथ ही, इस ऐप्लिकेशन को मोबाइल नेटवर्क की रुकावट की वजह से इस्तेमाल नहीं करना चाहिए.
सिस्टम_वेलबीइंग सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • ऐप्लिकेशन को, उपयोगकर्ताओं का ध्यान भटकने से रोकने वाली सुविधाएं देनी चाहिए. साथ ही, उपयोगकर्ताओं को उनके डिवाइस इस्तेमाल करने के तरीके (उदाहरण के लिए, हर हफ़्ते डिवाइस के इस्तेमाल में बीता समय) के आंकड़े देने चाहिए.
सिस्टम_TELEVISION_NOTIFICATION_HANDLER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • टीवी डिवाइसों पर ऐप्लिकेशन इस्तेमाल करने वाले लोगों को, स्क्रीन पर सबसे ऊपर सूचनाएं देने वाले ऐप्लिकेशन को दिखाना ज़रूरी है. android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL इंटेंट भेजे जाने पर (SystemUI से) ऐप्लिकेशन को मौजूदा चालू सूचनाएं भी दिखानी चाहिए.
सिस्टम_COMPANION_DEVICE_PROVIDER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ज़रूरी है कि ऐप्लिकेशन, उसके आस-पास मौजूद सहायक डिवाइसों का पता लगा सके. इसमें एक यूज़र इंटरफ़ेस (यूआई) होना चाहिए, ताकि उपयोगकर्ता यह पुष्टि कर सके कि दिया गया सहायक डिवाइस, किसी ऐप्लिकेशन से जुड़ा होना चाहिए और उसे मैनेज किया जाना चाहिए. जब उपयोगकर्ता पुष्टि कर देता है, तब मैनेज करने वाला ऐप्लिकेशन उस ऐप्लिकेशन को सहायक डिवाइस (जैसे, उसका नाम, पता, क्लास, और बॉन्ड की स्थिति) ऐक्सेस करने की अनुमति देता है. इसके बाद, वह बॉन्डिंग की प्रोसेस शुरू कर सकता है.
System_DOCUMENT_MANAGER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • ऐप्लिकेशन में एक गतिविधि होती है, जिससे उपयोगकर्ता मौजूदा दस्तावेज़ों को ऐक्सेस कर सकते हैं और डिवाइस पर नए दस्तावेज़ बना सकते हैं.
  • ऐप्लिकेशन को Android CDD सेक्शन में बताई गई सभी ज़रूरी शर्तें पूरी करनी होंगी 2.2.3. सॉफ़्टवेयर [3.2.3.1/H-0-1] शीर्षक के नीचे.
system_ACTIVITY_RECOGNIZER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • ऐप्लिकेशन में एक ऐसी सेवा मौजूद है जो android.permission.ACTIVITY_RECOGNITION से जुड़ी है. यह गतिविधि की पहचान कर सकती है, जैसे कि दौड़ना या साइकल चलाना.
system_UI सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • इस ऐप्लिकेशन में उपयोगकर्ताओं के लिए एक इंटरफ़ेस है, जिससे वे अपने फ़ोन से इंटरैक्ट कर सकते हैं. उदाहरण के लिए, फ़ोन की मुख्य स्क्रीन, नेविगेशन, हाल ही में इस्तेमाल किए गए ऐप्लिकेशन, क्विक सेटिंग, सूचना बार, लॉकस्क्रीन, और आवाज़ को कम या ज़्यादा करने की सुविधा.
सिस्टम_TELEVISION_REMOTE_SERVICE सभी:
  • यह ऐप्लिकेशन, Android TV पर एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • ऐप्लिकेशन में ऐसी सेवा है जो टीवी के रिमोट कंट्रोल एचआईडी डिवाइस से संपर्क कर सकती है (उदाहरण के लिए, BLE पर), इवेंट इंजेक्ट कर सकती है (जैसे कि बटन पर क्लिक), और अन्य डेटा (उदाहरण के लिए, रिमोट में बनाए गए माइक्रोफ़ोन से ऑडियो स्ट्रीम) भेज सकती है.
System_UI_INTELLIGENCE सभी:
  • यह पहले से इंस्टॉल की गई ऐसी सेवा है जो फ़्रेमवर्क एपीआई (सार्वजनिक या सिस्टम एपीआई) की मदद से, डिवाइस पर मौजूद इंटेलिजेंट प्रोसेसर उपलब्ध कराती है. इस प्रोसेसर को सिस्टम यूज़र इंटरफ़ेस (यूआई) की सुविधाओं के लिए, उपयोगकर्ता के डिवाइस पर इंटेलिजेंट प्रोसेसर के तौर पर इस्तेमाल किया जाता है. जैसे, उपयोगकर्ताओं के लिए अगले ऐप्लिकेशन का अनुमान लगाना और उन्हें दिखाना.
  • यह सेवा, Android CDD के सेक्शन 9.8.6 कॉन्टेंट कैप्चर में बताई गई सभी ज़रूरी शर्तों को पूरा करती है.
  • इसमें android.permission.INTERNET की अनुमति नहीं हो सकती. इसके बजाय, इसे किसी ओपन सोर्स प्रोजेक्ट में बेहतर तरीके से बताए गए एपीआई की मदद से, इंटरनेट को ऐक्सेस करना चाहिए.
  • यह नीचे दिए गए सिस्टम ऐप्लिकेशन के अलावा, अन्य ऐप्लिकेशन से बाइंड नहीं कर सकता. इसमें ब्लूटूथ, Contacts, Media, Telephony, SystemUI, और Internet API उपलब्ध कराने वाले कॉम्पोनेंट शामिल हैं. अनुमति वाले हर बाइंडिंग को सिस्टम कॉन्फ़िगरेशन में, <allow-association> कॉन्फ़िगरेशन की मदद से साफ़ तौर पर सेट अप किया जाना चाहिए.
  • यह तब तक ऐप्लिकेशन के साथ डेटा शेयर नहीं कर सकता, जब तक कि उपयोगकर्ता सीधे तौर पर कार्रवाई न करे. (उदाहरण के लिए, उपयोगकर्ता, हर बार डेटा शेयर करने पर साफ़ तौर पर एक बटन दबाता है).
System_AMBIENT_AUDIO_INTELLIGENCE सभी:
  • यह system_UI_INTELLIGENCE की शर्तों के मुताबिक है. हालांकि, पहले से इंस्टॉल की गई सेवा, ऐंबियंट ऑडियो के लिए, उपयोगकर्ता के डिवाइस पर इंटेलिजेंट प्रोसेसर उपलब्ध कराती है. जैसे, डिवाइस के आस-पास चल रहे गानों की पहचान करना.
System_AUDIO_INTELLIGENCE सभी:
  • यह सेवा system_UI_INTELLIGENCE की शर्तों के मुताबिक है. हालांकि, पहले से इंस्टॉल की गई सेवा, उपयोगकर्ता के डिवाइस पर मौजूद बेहतर प्रोसेसर उपलब्ध कराती है. इस प्रोसेसर में ऑडियो के लिए, कैप्शन, पॉडकास्ट, फ़ोन कॉल, वीडियो कॉल, और ऑडियो मैसेज जैसी सुविधाएं शामिल हैं.
System_NOTIFICATION_INTELLIGENCE सभी:
  • यह सेवा System_UI_INTELLIGENCE की शर्तों के मुताबिक है. हालांकि, पहले से इंस्टॉल की गई सेवा, सूचनाओं के लिए, उपयोगकर्ता के डिवाइस पर इंटेलिजेंट प्रोसेसर उपलब्ध कराती है. जैसे, मैसेज की सूचनाओं के जवाब देना और उन पर कार्रवाईयां करना.
सिस्टम_TEXT_INTELLIGENCE सभी:
  • यह सेवा System_UI_INTELLIGENCE की शर्तों के मुताबिक है. हालांकि, पहले से इंस्टॉल की गई सेवा, टेक्स्ट के लिए, उपयोगकर्ता के डिवाइस पर इंटेलिजेंट प्रोसेसर उपलब्ध कराती है. उदाहरण के लिए, लाइव ट्रांसलेशन या ऑटोमैटिक भरने की सुविधा की सुविधा.
सिस्टम_VISUAL_INTELLIGENCE सभी:
  • यह सेवा System_UI_INTELLIGENCE की शर्तों के मुताबिक है. हालांकि, पहले से इंस्टॉल की गई सेवा, कैमरे के डेटा का विश्लेषण करने वाली विज़ुअल सुविधाओं के लिए, उपयोगकर्ता के डिवाइस पर इंटेलिजेंट प्रोसेसर उपलब्ध कराती है. उदाहरण के लिए, जब उपयोगकर्ता फ़ोन देख रहा हो, तब उसकी स्क्रीन को लाइव रखना या डिवाइस में सामने वाले कैमरे से, उपयोगकर्ता के चेहरे की दिशा के हिसाब से सही स्क्रीन ओरिएंटेशन तय करना.
COMPANION_DEVICE_APP_STREAMING सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन, कनेक्ट किए गए डिवाइसों के साथ कम्यूनिकेशन के चैनल बना सकता है और उन्हें मैनेज कर सकता है, ताकि वे डेटा एक्सचेंज कर सकें. बातचीत के ये चैनल सेट अप करने के लिए, ऐप्लिकेशन और कनेक्ट किए गए डिवाइसों को एक-दूसरे की सही तरीके से पुष्टि करनी होगी. उदाहरण के लिए, शेयर की गई कुंजियों के बारे में अपनी जानकारी ज़ाहिर करके. बातचीत के चैनलों में, एन्क्रिप्ट (सुरक्षित) करने की सुविधा होनी चाहिए.
  • ऐप्लिकेशन, स्थानीय डिवाइस से कनेक्ट किए गए डिवाइस पर सूचनाएं भेज सकता है. इससे उपयोगकर्ता को कनेक्ट किए गए डिवाइस पर मिलने वाली सूचनाओं पर कार्रवाई करने की अनुमति मिलती है.
  • कनेक्ट किए गए डिवाइस पर, ऐप्लिकेशन स्ट्रीमिंग के लिए ज़रूरी मेटाडेटा स्ट्रीम कर पाना. जैसे, स्थानीय डिवाइस पर उपलब्ध ऐप्लिकेशन की सूची.
  • जब उपयोगकर्ता साफ़ तौर पर सहमति देकर (या तो फ़ोन पर या कनेक्ट किए गए डिवाइस पर) ऐसा करने की अपनी पसंद के बारे में बताए, तो स्थानीय डिवाइस से कनेक्ट किए गए डिवाइस पर ऐप्लिकेशन स्ट्रीम करने की अनुमति होनी चाहिए.
  • आपके पास स्थानीय डिवाइस पर, कनेक्ट किए गए डिवाइस पर स्ट्रीम किए गए ऐप्लिकेशन में होने वाले इवेंट को फिर से चलाने (इंजेक्ट करने) की सुविधा होनी चाहिए. उदाहरण के लिए, किसी टच इवेंट को फ़ोन के कोऑर्डिनेट पर, टैबलेट पर फिर से चलाना.
  • यह ऐप्लिकेशन, डिवाइस के माइक्रोफ़ोन की स्ट्रीम को, कनेक्ट किए गए डिवाइस की माइक्रोफ़ोन स्ट्रीम से बदल सकता है. ऐसा तब किया जा सकता है, जब स्ट्रीम किया गया ऐप्लिकेशन, माइक्रोफ़ोन का इस्तेमाल कर रहा हो.
  • ऐप्लिकेशन, डिवाइस से ऑडियो कैप्चर करता है और उसे कनेक्ट किए गए डिवाइस पर स्ट्रीम करता है.
  • जब स्ट्रीम किया जा रहा ऐप्लिकेशन कैमरे का इस्तेमाल कर रहा हो, तब लोकल डिवाइस के कैमरा स्ट्रीम को ब्लॉक करना ज़रूरी है.
  • कनेक्ट किए गए डिवाइस के ओएस बिल्ड के भरोसेमंद होने की पुष्टि ज़रूर करनी चाहिए. उदाहरण के लिए, VerifiedBootState के हिसाब से डिवाइस को प्रमाणित करने की सुविधा का इस्तेमाल करके.
  • सिर्फ़ उन ऐप्लिकेशन को स्ट्रीम करें जिनके दोनों डिवाइसों पर, डिवाइस पर मौजूद खाते की रजिस्ट्री में, मिलता-जुलता सिर्फ़ एक खाता हो. उदाहरण के लिए, Android पर AccountManager. अगर ऐसा नहीं है, तो स्ट्रीमिंग की अनुमति देने के लिए, सोर्स डिवाइस पर एक बार इस्तेमाल होने वाला कोड दिखाना होगा. यह कोड, कनेक्ट किए गए डिवाइस पर डालना होगा. ध्यान दें कि जिन डिवाइसों पर एक से ज़्यादा उपयोगकर्ता काम करते हैं (न कि एक से ज़्यादा खाते) ऐसे डिवाइस के मामले में, एक तरह के भरोसेमंद डेटा आइसोलेशन के साथ काम करते हैं, जैसे कि Android मल्टी-यूज़र, तो उपयोगकर्ता को एक डिवाइस माना जाता है.
  • अगर कनेक्ट किए गए डिवाइस पर, खाते की पुष्टि करने की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो स्ट्रीमिंग को तुरंत बंद कर देना चाहिए और कनेक्ट किए गए डिवाइस से डिसकनेक्ट कर देना चाहिए.
  • स्ट्रीमिंग से पहले और उसके दौरान, इस बात की पुष्टि ज़रूर करें कि कनेक्ट किया गया डिवाइस, स्थानीय डिवाइस की ब्लूटूथ रेंज में हो.
  • अगर उपयोगकर्ता, कनेक्ट किए गए डिवाइस (उदाहरण के लिए, कीबोर्ड, टचस्क्रीन, और माउस इस्तेमाल में नहीं है) से पांच मिनट तक इंटरैक्ट नहीं करता, तो चल रहे ऐप्लिकेशन स्ट्रीमिंग सेशन को डिसकनेक्ट करना ज़रूरी है. वीडियो स्ट्रीमिंग ऐप्लिकेशन को यह ज़रूरी शर्तें पूरी नहीं करनी है.
  • अगर सोर्स डिवाइस, लॉकस्क्रीन नॉलेज फ़ैक्टर (LSKF) का इस्तेमाल करता है, तो स्क्रीन लॉक होने पर, ऐप्लिकेशन को कनेक्ट किए गए किसी डिवाइस पर ऐप्लिकेशन स्ट्रीम नहीं करना चाहिए. ऐसा तब तक नहीं किया जाना चाहिए, जब तक उस डिवाइस में लॉक स्क्रीन और अनलॉक न हो.
  • अगर डिवाइस को एडमिन मैनेज करता है, तो ऐप्लिकेशन को आस-पास मौजूद डिवाइसों पर ऐप्लिकेशन स्ट्रीमिंग की सुविधा को चालू या बंद करने के लिए, एडमिन की सेट की गई नीतियों के मुताबिक काम करना चाहिए. उदाहरण के लिए, Android में DevicePolicyManager की सेटिंग इस्तेमाल करके.
  • यह पक्का करना चाहिए कि रिमोट डिसप्ले और रिमोट इनपुट इवेंट के सभी सोर्स, उपयोगकर्ता के नज़रिये से एक ही लॉजिकल डिवाइस (उदाहरण के लिए, रिमोट डिसप्ले और कनेक्ट किया गया कीबोर्ड) से हों और इवेंट उसी हिसाब से रूट किए जाते हों.
  • उपयोगकर्ता के पास लोकल डिवाइस से स्ट्रीमिंग बंद करने की सुविधा होनी चाहिए. उदाहरण के लिए, उसे लगातार सूचना देने वाले बटन का इस्तेमाल करके. अगर फ़ोन में स्क्रीन लॉक सेट किया गया है, तो यह कार्रवाई लॉकस्क्रीन की मदद से तय होती है.
  • दूसरे डिवाइस पर स्ट्रीमिंग होने के दौरान, सोर्स डिवाइस पर कीमत दिखाई जानी चाहिए. जैसे, स्टेटस बार में आइकॉन या लगातार मिलने वाली सूचना.
DEVICE_POLICY_MANAGEMENT सभी:
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं. इस भूमिका का अनुरोध नहीं किया जा सकता, क्योंकि इसे डिवाइस के शिप होते समय, OEM की तय की गई पैकेज के नाम के लिए दिया जाता है.
  • ऐप्लिकेशन के पास, मैनेज की जा रही प्रोफ़ाइल (प्रोफ़ाइल के मालिक) या मैनेज किए जा रहे डिवाइस (डिवाइस का मालिक) का प्रावधान करने की सुविधा होनी चाहिए. इसके अलावा, ज़रूरत पड़ने पर डिवाइस/प्रोफ़ाइल के मालिक के तौर पर, डिवाइस नीति क्लाइंट को डाउनलोड/इंस्टॉल करने की भी अनुमति होनी चाहिए.
  • यह ऐप्लिकेशन विकल्प के तौर पर, डाइनैमिक तौर पर रिसॉर्स अपडेट कर सकता है. जैसे, स्ट्रिंग और ड्रॉबल. इनका इस्तेमाल डिवाइस से जुड़ी नीति को मैनेज करने के लिए किया जाता है.
  • यह ऐप्लिकेशन या तो पहले से इंस्टॉल किया गया सिस्टम ऐप्लिकेशन हो सकता है या प्रावधान से पहले डाउनलोड और इंस्टॉल किया जा सकता है.
  • प्रोफ़ाइल के मालिक के लिए प्रावधान करने के मामलों में, जब किसी दिए गए Android उपयोगकर्ता पर रोल होल्डर ऐप्लिकेशन इंस्टॉल किया जाता है, तो उसे उस उपयोगकर्ता की लागू सभी प्रोफ़ाइलों पर इंस्टॉल किया जाना चाहिए.
सिस्टम_APP_PROTECTION_SERVICE सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • इस ऐप्लिकेशन का मकसद, सिर्फ़ ऐसे ऐप्लिकेशन का पता लगाना है जो नुकसान पहुंचा सकते हैं. इन ऐप्लिकेशन से उपयोगकर्ताओं, उपयोगकर्ता के डेटा या डिवाइसों को ट्रोजन, फ़िशिंग, और स्पायवेयर ऐप्लिकेशन या मोबाइल के अनचाहे सॉफ़्टवेयर को खतरा हो सकता है.
  • ऐप्लिकेशन को Android CDD के सेक्शन 9.8.6. ओएस-लेवल और ऐंबियंट डेटा.
  • इसे android.permission.INTERNET की सामान्य अनुमति के बारे में नहीं बताना चाहिए. इसके बजाय, इसे किसी ओपन सोर्स प्रोजेक्ट में अच्छी तरह से तय एपीआई के ज़रिए इंटरनेट ऐक्सेस करना चाहिए.
  • इसे नीचे दिए गए सिस्टम ऐप्लिकेशन के अलावा, अन्य ऐप्लिकेशन से बाइंड नहीं किया जाना चाहिए: अनुमति कंट्रोलर और Telephony और इंटरनेट एपीआई उपलब्ध कराने वाले कॉम्पोनेंट. अनुमति वाले हर बाइंडिंग को सिस्टम कॉन्फ़िगरेशन में, <allow-association> कॉन्फ़िगरेशन की मदद से साफ़ तौर पर सेट अप किया जाना चाहिए.
  • इसे तब तक ऐप्लिकेशन के साथ डेटा शेयर नहीं करना चाहिए, जब तक कि उपयोगकर्ता सीधे तौर पर कार्रवाई न कर रहा हो (उदाहरण के लिए, उपयोगकर्ता, हर बार डेटा शेयर करने पर साफ़ तौर पर एक बटन दबाता है).
system_AUTOMOTIVE_CALENDAR_SYNC_MANAGER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • उपयोगकर्ता के iOS या Android फ़ोन से Android Auto डिवाइस पर कैलेंडर का डेटा ट्रांसफ़र करना ज़रूरी है. Android Auto डिवाइस को यह कैलेंडर डेटा कैलेंडर की सेवा देने वाली कंपनी में सेव करना होगा.
  • ऐप्लिकेशन को फ़ोन पर एक यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट उपलब्ध कराना होगा, जिसका इस्तेमाल उपयोगकर्ता कैलेंडर सिंक करने की सुविधा चालू करने और सिंक करने के लिए कैलेंडर चुनने के लिए कर सके. ऐप्लिकेशन को फ़ोन पर एक यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट उपलब्ध कराना होगा, जिसका इस्तेमाल उपयोगकर्ता कैलेंडर सिंक करने की सुविधा बंद करने के लिए कर सके.
  • इंटरनेट कनेक्शन के बिना काम करना चाहिए. उदाहरण के लिए, सीधे वायर वाले या वायरलेस कनेक्शन का इस्तेमाल करके.
AutoMOTIVE_NAVIGATION सभी:
  • ऐप्लिकेशन में कोई ऐसी गतिविधि मौजूद हो जिसे इंप्लिसिट इंटेंट रिक्वेस्ट के ज़रिए शुरू किया जा सकता है. इससे लोगों की मौजूदा जगह और आस-पास की जगहों की जानकारी मिलती है.
  • ऐप्लिकेशन में कोई ऐसी गतिविधि मौजूद है जिसे इंप्लिसिट इंटेंट अनुरोधों के ज़रिए शुरू किया जा सकता है. इससे उपयोगकर्ता किसी खास भौगोलिक जगह पर नेविगेट कर सकता है.
  • ऐप्लिकेशन में नेविगेशन फ़ोकस को दबाकर रखने पर, इंस्ट्रुमेंट क्लस्टर में एक गतिविधि लॉन्च होती है. गतिविधि में उपयोगकर्ता की मौजूदा जगह और आस-पास की चीज़ें दिखनी चाहिए. साथ ही, उन्हें किसी खास भौगोलिक जगह पर जाने की अनुमति मिलनी चाहिए.
COMPANION_DEVICE_COMPUTER सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • इससे लोग, कनेक्ट किए गए कंप्यूटर पर फ़ोन से सूचनाएं शेयर करने के साथ-साथ फ़ोटो और मीडिया को ऐक्सेस कर सकते हैं.
system_SETTINGS_INTELLIGENCE कम से कम एक:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • ऐसी सेवा मौजूद है जो सेटिंग ऐप्लिकेशन के लिए इंटेलिजेंस सुविधाएं उपलब्ध कराती है. जैसे, सुझाव देना और खोजने की सुविधा.
नोट सभी:
  • ऐप्लिकेशन में कोई ऐसी गतिविधि हो जिसे ऐप्लिकेशन इंप्लिसिट इंटेंट रिक्वेस्ट के ज़रिए शुरू कर सके. गतिविधि की मदद से उपयोगकर्ता नोट बना सकता है, भले ही स्क्रीन लॉक हो या अनलॉक.
  • ऐप्लिकेशन में एक ऐसी गतिविधि होनी चाहिए जिसमें android.intent.category.DEFAULT कैटगरी के साथ android.intent.action.CREATE_NOTE के लिए इंटेंट फ़िल्टर हो. गतिविधि को इंटेंट एक्स्ट्रा android.intent.extra.USE_STYLUS_MODE को भी सही तरीके से हैंडल करना चाहिए.
  • ऐप्लिकेशन में, मेनिफ़ेस्ट एट्रिब्यूट showWhenLocked और turnScreenOn दोनों को true पर सेट किया जाना चाहिए.
COMPANION_DEVICE_GLASSES ऐप्लिकेशन, ग्लास डिवाइस से जुड़े होने और उसे मैनेज करने के अनुरोध कर सकता है. इसके लिए, CompanionDeviceManager क्लास से मिले एपीआई का इस्तेमाल किया जाता है. सीडीएम से मिले यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके ग्लास डिवाइस और ऐप्लिकेशन को कनेक्ट करने के बाद, उपयोगकर्ता अपने चश्मे के डिवाइस को संपर्कों का ऐक्सेस देकर, सूचनाएं और फ़ोन कॉल मैनेज करने की अनुमति देकर, उसे मैनेज कर सकते हैं.
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING सभी:
  • ऐप्लिकेशन एक सिस्टम ऐप्लिकेशन है.
  • सिर्फ़ OEM, ऐप्लिकेशन को यह भूमिका दे सकते हैं.
  • यह ऐप्लिकेशन, कनेक्ट किए गए डिवाइसों के साथ कम्यूनिकेशन के चैनल बना सकता है और उन्हें मैनेज कर सकता है. इससे डिवाइस, डेटा एक्सचेंज कर सकते हैं. कम्यूनिकेशन के ये चैनल सेट अप करने के लिए, ऐप्लिकेशन और कनेक्ट किए गए डिवाइसों को एक-दूसरे की सही तरीके से पुष्टि करनी होगी. उदाहरण के लिए, शेयर की गई कुंजियों के बारे में अपनी जानकारी को साबित करना होगा. बातचीत के चैनलों में, एन्क्रिप्ट (सुरक्षित) करने की सुविधा होनी चाहिए.
  • ऐप्लिकेशन, स्थानीय डिवाइस से कनेक्ट किए गए डिवाइस पर सूचनाएं भेज सकता है. इससे उपयोगकर्ता को कनेक्ट किए गए डिवाइस पर मिलने वाली सूचनाओं पर कार्रवाई करने की अनुमति मिलती है.
  • कनेक्ट किए गए डिवाइस पर, ऐप्लिकेशन स्ट्रीमिंग के लिए ज़रूरी मेटाडेटा स्ट्रीम कर पाना. जैसे, स्थानीय डिवाइस पर उपलब्ध ऐप्लिकेशन की सूची.
  • जब उपयोगकर्ता साफ़ तौर पर सहमति देकर (या तो फ़ोन पर या कनेक्ट किए गए डिवाइस पर) ऐसा करने की अपनी पसंद के बारे में बताए, तो स्थानीय डिवाइस से कनेक्ट किए गए डिवाइस पर ऐप्लिकेशन स्ट्रीम करने की अनुमति होनी चाहिए.
  • आपके पास स्थानीय डिवाइस पर, कनेक्ट किए गए डिवाइस पर स्ट्रीम किए गए ऐप्लिकेशन में होने वाले इवेंट को फिर से चलाने (इंजेक्ट करने) की सुविधा होनी चाहिए. उदाहरण के लिए, टैबलेट पर टच इवेंट को उन ही कोऑर्डिनेट पर फिर से चलाना जो फ़ोन पर किए गए हैं. इसके अलावा, चश्मे के डिवाइस पर हुए इनपुट इवेंट को उसी तरह के इनपुट सिमैंटिक के साथ फिर से चलाना है जैसा फ़ोन पर किया गया है.
  • यह ऐप्लिकेशन, डिवाइस के माइक्रोफ़ोन की स्ट्रीम को, कनेक्ट किए गए डिवाइस की माइक्रोफ़ोन स्ट्रीम से बदल सकता है. ऐसा तब किया जा सकता है, जब स्ट्रीम किया गया ऐप्लिकेशन, माइक्रोफ़ोन का इस्तेमाल कर रहा हो.
  • ऐप्लिकेशन, डिवाइस से ऑडियो कैप्चर करता है और उसे कनेक्ट किए गए डिवाइस पर स्ट्रीम करता है.
  • कनेक्ट किए गए डिवाइस के ओएस के बिल्ड के भरोसेमंद होने की पुष्टि ज़रूर करनी चाहिए. उदाहरण के लिए, VerifiedBootState के हिसाब से डिवाइस को प्रमाणित करने की सुविधा का इस्तेमाल करके.
  • सिर्फ़ उन ऐप्लिकेशन को स्ट्रीम करें जिनके दोनों डिवाइसों पर, उपयोगकर्ता के डिवाइस पर मौजूद खाते की रजिस्ट्री में, मिलता-जुलता सिर्फ़ एक खाता हो. उदाहरण के लिए, Android पर AccountManager. अगर ऐसा नहीं है, तो स्ट्रीमिंग की अनुमति देने के लिए, सोर्स डिवाइस पर एक बार इस्तेमाल होने वाला कोड दिखाना होगा. यह कोड, कनेक्ट किए गए डिवाइस पर डालना होगा. ध्यान दें कि जिन डिवाइसों पर एक से ज़्यादा उपयोगकर्ता काम करते हैं (न कि एक से ज़्यादा खाते) ऐसे डिवाइस के मामले में, जिनमें डेटा अलग-अलग गारंटी के साथ काम करता है, जैसे कि Android मल्टी-यूज़र, तो उपयोगकर्ता को एक डिवाइस माना जाता है.
  • अगर कनेक्ट किए गए डिवाइस पर, खाते की पुष्टि करने की समयसीमा खत्म हो जाती है या उसे रद्द कर दिया जाता है, तो स्ट्रीमिंग को तुरंत बंद कर देना चाहिए और कनेक्ट किए गए डिवाइस से डिसकनेक्ट कर देना चाहिए.
  • अगर सोर्स डिवाइस, लॉकस्क्रीन नॉलेज फ़ैक्टर (LSKF) का इस्तेमाल करता है, तो स्क्रीन लॉक होने पर, ऐप्लिकेशन को कनेक्ट किए गए किसी डिवाइस पर ऐप्लिकेशन स्ट्रीम नहीं करना चाहिए. ऐसा तब तक नहीं किया जाना चाहिए, जब तक उस डिवाइस में लॉक स्क्रीन और अनलॉक न हो.
  • अगर डिवाइस को एडमिन मैनेज करता है, तो ऐप्लिकेशन को आस-पास मौजूद डिवाइसों पर स्ट्रीमिंग की सुविधा चालू या बंद करने के लिए, एडमिन की सेट की गई नीतियों के मुताबिक काम करना चाहिए. उदाहरण के लिए, Android में DevicePolicyManager की सेटिंग इस्तेमाल करके.
  • यह पक्का करना चाहिए कि रिमोट डिसप्ले और रिमोट इनपुट इवेंट के सभी सोर्स, उपयोगकर्ता के नज़रिये से एक ही लॉजिकल डिवाइस (उदाहरण के लिए, रिमोट डिसप्ले और कनेक्ट किया गया कीबोर्ड) से जुड़े हों और इवेंट उसी हिसाब से रूट किए जाते हों.
  • उपयोगकर्ता के पास लोकल डिवाइस से स्ट्रीमिंग बंद करने की सुविधा होनी चाहिए. उदाहरण के लिए, उसे लगातार सूचना देने वाले बटन का इस्तेमाल करके. अगर फ़ोन में स्क्रीन लॉक सेट किया गया है, तो यह कार्रवाई लॉकस्क्रीन की मदद से तय होती है.
  • दूसरे डिवाइस पर स्ट्रीमिंग होने के दौरान, सोर्स डिवाइस पर कीमत दिखाई जानी चाहिए. जैसे, स्टेटस बार में आइकॉन या लगातार मिलने वाली सूचना.