अनुमति के अनुरोध, डिवाइस पर मौजूद संवेदनशील जानकारी को सुरक्षित रखते हैं. इनका इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब आपके ऐप्लिकेशन के काम करने के लिए जानकारी का ऐक्सेस ज़रूरी हो. इस दस्तावेज़ में, ऐसी जानकारी के ऐक्सेस के बिना भी उसी (या बेहतर) सुविधा को पाने के तरीकों के बारे में सलाह दी गई है. इसमें, Android ऑपरेटिंग सिस्टम में अनुमतियों के काम करने के तरीके के बारे में पूरी जानकारी नहीं दी गई है.
Android की अनुमतियों के बारे में ज़्यादा जानने के लिए, कृपया अनुमतियों की खास जानकारी देखें. अपने कोड में अनुमतियों के साथ काम करने के तरीके के बारे में जानकारी पाने के लिए, ऐप्लिकेशन की अनुमतियों का अनुरोध करना देखें.
Android 6.0 और उसके बाद के वर्शन में अनुमतियां
Android 6.0 (एपीआई लेवल 23) और उसके बाद के वर्शन में, ऐप्लिकेशन इंस्टॉल होने से पहले के बजाय, रनटाइम के दौरान उपयोगकर्ता से अनुमतियों का अनुरोध कर सकते हैं. इससे ऐप्लिकेशन को अनुमतियों का अनुरोध करने की अनुमति मिलती है, जब ऐप्लिकेशन को सेवाओं या सेवाओं से सुरक्षित किए गए डेटा की ज़रूरत होती है. हालांकि, इससे ऐप्लिकेशन के व्यवहार में ज़रूरी नहीं है कि कोई बदलाव हो, लेकिन उपयोगकर्ता के संवेदनशील डेटा को मैनेज करने के तरीके में कुछ बदलाव होते हैं:
ज़्यादा जानकारी
उपयोगकर्ताओं को रनटाइम के दौरान, आपके ऐप्लिकेशन के संदर्भ में, उन अनुमति ग्रुप के दायरे में आने वाले फ़ंक्शन को ऐक्सेस करने की अनुमति देने के लिए कहा जाता है. उपयोगकर्ता, अनुमति के अनुरोध के संदर्भ को लेकर ज़्यादा संवेदनशील होते हैं. अगर अनुरोध और आपके ऐप्लिकेशन के मकसद में कोई अंतर है, तो उपयोगकर्ता को इस बारे में पूरी जानकारी देना ज़्यादा ज़रूरी हो जाता है कि अनुमति का अनुरोध क्यों किया जा रहा है. जब भी संभव हो, आपको अनुरोध के समय और अनुरोध अस्वीकार होने पर, फ़ॉलो-अप डायलॉग में, अपने अनुरोध के बारे में जानकारी देनी चाहिए.
अनुमति के अनुरोध को स्वीकार किए जाने की संभावना बढ़ाने के लिए, सिर्फ़ तब अनुरोध करें जब किसी खास सुविधा की ज़रूरत हो. उदाहरण के लिए, माइक्रोफ़ोन का ऐक्सेस पाने के लिए, सिर्फ़ तब प्रॉम्प्ट दिखाएं, जब उपयोगकर्ता माइक्रोफ़ोन बटन पर क्लिक करे. उपयोगकर्ता, ऐसी अनुमति देने की संभावना ज़्यादा रखते हैं जिसकी उन्हें ज़रूरत है.
अनुमतियां देने में ज़्यादा सुविधाएं
उपयोगकर्ता, अनुमतियों का अनुरोध किए जाने पर और सेटिंग में जाकर, अलग-अलग अनुमतियों के ऐक्सेस से मना कर सकते हैं. हालांकि, ऐसा करने पर ऐप्लिकेशन के काम न करने पर, वे हैरान हो सकते हैं. यह पता लगाना अच्छा होता है कि कितने उपयोगकर्ता अनुमतियों (उदाहरण के लिए, Google Analytics का इस्तेमाल करने की अनुमति) को अस्वीकार कर रहे हैं. इससे, उस अनुमति पर निर्भर रहने से बचने के लिए, अपने ऐप्लिकेशन को फिर से तैयार किया जा सकता है या यह बेहतर तरीके से बताया जा सकता है कि आपके ऐप्लिकेशन को सही तरीके से काम करने के लिए, अनुमति की ज़रूरत क्यों है. आपको यह भी पक्का करना चाहिए कि जब उपयोगकर्ता अनुमतियों के अनुरोधों को अस्वीकार करते हैं या सेटिंग में जाकर अनुमतियों को टॉगल करके बंद करते हैं, तब आपका ऐप्लिकेशन अपवादों को मैनेज करता है.
लेन-देन से जुड़ी समस्याओं में बढ़ोतरी
उपयोगकर्ताओं को अनुमति ग्रुप के लिए, एक सेट के तौर पर नहीं, बल्कि अलग-अलग ऐक्सेस देने के लिए कहा जाता है. इसलिए, यह ज़रूरी है कि आप कम से कम अनुमतियों का अनुरोध करें. इससे अनुमतियां देने के लिए, उपयोगकर्ता पर ज़्यादा बोझ पड़ता है. इसलिए, कम से कम एक अनुरोध अस्वीकार किए जाने की संभावना बढ़ जाती है.
डिफ़ॉल्ट हैंडलर बनने के लिए ज़रूरी अनुमतियां
कुछ ऐप्लिकेशन, कॉल लॉग और एसएमएस मैसेज से जुड़ी उपयोगकर्ता की संवेदनशील जानकारी के ऐक्सेस पर निर्भर होते हैं. अगर आपको कॉल लॉग और मैसेज (एसएमएस) से जुड़ी अनुमतियों का अनुरोध करना है और अपने ऐप्लिकेशन को Play Store पर पब्लिश करना है, तो आपको रनटाइम की इन अनुमतियों का अनुरोध करने से पहले, उपयोगकर्ता को किसी मुख्य सिस्टम फ़ंक्शन के लिए, अपने ऐप्लिकेशन को डिफ़ॉल्ट हैंडलर के तौर पर सेट करने के लिए कहना होगा.
डिफ़ॉल्ट हैंडलर के बारे में ज़्यादा जानकारी के लिए, सिर्फ़ डिफ़ॉल्ट हैंडलर में इस्तेमाल की जाने वाली अनुमतियों के बारे में गाइड देखें. इसमें, उपयोगकर्ताओं को डिफ़ॉल्ट हैंडलर प्रॉम्प्ट दिखाने के बारे में भी दिशा-निर्देश शामिल हैं.
उन लाइब्रेरी के बारे में जानकारी जिनका इस्तेमाल किया जा रहा है
कभी-कभी, आपके ऐप्लिकेशन में इस्तेमाल की जाने वाली लाइब्रेरी के लिए अनुमतियां ज़रूरी होती हैं. उदाहरण के लिए, ज़रूरी फ़ंक्शन लागू करने के लिए, विज्ञापन और आंकड़ों की लाइब्रेरी को LOCATION
अनुमति ग्रुप का ऐक्सेस चाहिए. हालांकि, उपयोगकर्ता के नज़रिए से, अनुमति का अनुरोध लाइब्रेरी से नहीं, बल्कि आपके ऐप्लिकेशन से आता है.
उपयोगकर्ता, एक ही तरह की सुविधा के लिए कम अनुमतियां मांगने वाले ऐप्लिकेशन चुनते हैं. इसी तरह, डेवलपर को अपनी लाइब्रेरी की समीक्षा करनी चाहिए और ऐसे तीसरे पक्ष के SDK टूल चुनने चाहिए जो ग़ैर-ज़रूरी अनुमतियों का इस्तेमाल न करते हों. उदाहरण के लिए, अगर आपने ऐसी लाइब्रेरी का इस्तेमाल किया है जो जगह की जानकारी की सुविधा उपलब्ध कराती है, तो पक्का करें कि आपने FINE_LOCATION
की अनुमति का अनुरोध तब तक न किया हो, जब तक कि जगह के हिसाब से टारगेटिंग की सुविधा का इस्तेमाल न किया जा रहा हो.
बैकग्राउंड में जगह की जानकारी के ऐक्सेस को सीमित करना
जब आपका ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तो जगह की जानकारी ऐक्सेस करने की सुविधा, ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी होनी चाहिए. साथ ही, इससे उपयोगकर्ताओं को साफ़ तौर पर फ़ायदा मिलना चाहिए.
अनुमतियों के दोनों मॉडल के लिए जांच करना
Android 6.0 (एपीआई लेवल 23) और उसके बाद के वर्शन में, उपयोगकर्ता ऐप्लिकेशन को इंस्टॉल करने के बजाय, रनटाइम पर ऐप्लिकेशन की अनुमतियां देते हैं और उन्हें रद्द करते हैं. इसलिए, आपको अपने ऐप्लिकेशन को कई तरह की स्थितियों में टेस्ट करना होगा. Android 6.0 से पहले, यह माना जा सकता था कि अगर आपका ऐप्लिकेशन चल रहा है, तो उसके पास वे सभी अनुमतियां हैं जिनके बारे में ऐप्लिकेशन मेनिफ़ेस्ट में बताया गया है. अब उपयोगकर्ता, एपीआई लेवल के बावजूद, किसी भी ऐप्लिकेशन के लिए अनुमतियां चालू या बंद कर सकता है. आपको यह पक्का करने के लिए जांच करनी चाहिए कि आपका ऐप्लिकेशन, अनुमति से जुड़ी अलग-अलग स्थितियों में ठीक से काम करता है या नहीं.
यहां दी गई सलाह से, आपको एपीआई लेवल 23 या उसके बाद के वर्शन पर काम करने वाले डिवाइसों पर, अनुमतियों से जुड़ी कोड से जुड़ी समस्याओं का पता लगाने में मदद मिलेगी:
- अपने ऐप्लिकेशन की मौजूदा अनुमतियों और उनसे जुड़े कोड पाथ की पहचान करें.
- अनुमति से सुरक्षित सेवाओं और डेटा के लिए, उपयोगकर्ता फ़्लो की जांच करें.
- दी गई या रद्द की गई अनुमतियों के अलग-अलग कॉम्बिनेशन के साथ टेस्ट करें. उदाहरण के लिए, कोई कैमरा ऐप्लिकेशन अपने मेनिफ़ेस्ट में
CAMERA
,READ_CONTACTS
, औरACCESS_FINE_LOCATION
को शामिल कर सकता है. आपको इन सभी अनुमतियों को चालू और बंद करके, ऐप्लिकेशन की जांच करनी चाहिए. इससे यह पक्का किया जा सकेगा कि ऐप्लिकेशन, अनुमतियों के सभी कॉन्फ़िगरेशन को आसानी से मैनेज कर सकता है. - कमांड लाइन से अनुमतियां मैनेज करने के लिए, adb टूल का इस्तेमाल करें:
- ग्रुप के हिसाब से अनुमतियां और स्थिति की सूची:
$ adb shell pm list permissions -d -g
- एक या उससे ज़्यादा अनुमतियां दें या रद्द करें:
$ adb shell pm [grant|revoke] <permission-name> ...
- ग्रुप के हिसाब से अनुमतियां और स्थिति की सूची:
- अनुमतियों का इस्तेमाल करने वाली सेवाओं के लिए, अपने ऐप्लिकेशन का विश्लेषण करें.
अन्य संसाधन
- Android की अनुमतियों के लिए, Material Design के दिशा-निर्देश
- Android Marshmallow 6.0: अनुमति मांगना: इस वीडियो में, Android के रनटाइम की अनुमति देने के मॉडल के बारे में बताया गया है. साथ ही, उपयोगकर्ताओं से अनुमतियां मांगने का सही तरीका भी बताया गया है.
- बताएं कि ऐप्लिकेशन को अनुमतियों की ज़रूरत क्यों है
- यूनीक आइडेंटिफ़ायर इस्तेमाल करने के सबसे सही तरीके