विशेष अनुमतियों का अनुरोध करें

खास अनुमति, सिस्टम के ऐसे संसाधनों के ऐक्सेस को सुरक्षित रखती है जिन्हें ख़ास तौर पर संवेदनशील या सीधे तौर पर उपयोगकर्ता की निजता से जुड़ा न हो. ये अनुमतियां हैं: इंस्टॉल के समय से अलग है अनुमतियां और रनटाइम अनुमतियां हैं.

पहली इमेज: सिस्टम में ऐप्लिकेशन के लिए खास ऐक्सेस वाली स्क्रीन सेटिंग.

खास अनुमतियों के कुछ उदाहरण:

  • सटीक समय वाले अलार्म शेड्यूल किए जा रहे हैं.
  • दूसरे ऐप्लिकेशन के ऊपर दिखाना और ड्रॉइंग करना.
  • सभी स्टोरेज डेटा को ऐक्सेस किया जा रहा है.

खास अनुमति का एलान करने वाले ऐप्लिकेशन, ऐप्लिकेशन के लिए खास ऐक्सेस में दिखाए जाते हैं पेज पर जाएं (इमेज 1). ऐप्लिकेशन को खास अनुमति देने के लिए, उपयोगकर्ता को इस पेज पर जाना होगा: सेटिंग > ऐप्लिकेशन > ऐप्लिकेशन के पास खास ऐक्सेस.

वर्कफ़्लो

खास अनुमति का अनुरोध करने के लिए, ये काम करें:

  1. अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, खास इवेंट का एलान करें अनुमतियां हैं, जिनकी ज़रूरत आपके ऐप्लिकेशन को पड़ सकती है अनुरोध.
  2. अपने ऐप्लिकेशन के उपयोगकर्ता अनुभव को इस तरह से डिज़ाइन करें कि ऐप्लिकेशन में खास कार्रवाइयां जुड़ी हों खास अनुमतियों के साथ. उपयोगकर्ताओं को बताएं कि उन्हें कौनसी कार्रवाइयां करनी चाहिए आपके ऐप्लिकेशन को उपयोगकर्ता का निजी डेटा ऐक्सेस करने की अनुमति देनी होगी.
  3. शुरू करने के लिए, उपयोगकर्ता का इंतज़ार करें आपके ऐप्लिकेशन में कोई ऐसा टास्क या कार्रवाई जिसके लिए किसी निजी उपयोगकर्ता की अनुमति की ज़रूरत है डेटा शामिल है. इस समय, आपका ऐप्लिकेशन खास अनुमति का अनुरोध कर सकता है उस डेटा को ऐक्सेस करने के लिए ज़रूरी है.
  4. यह पता करें कि उपयोगकर्ता ने पहले से ही ऐसी खास अनुमति दी है या नहीं जो के लिए ज़रूरी है. ऐसा करने के लिए, प्रत्येक अनुमति की कस्टम जांच का उपयोग करें फ़ंक्शन में जोड़ा जा सकता है. अगर आपने अनुमति दी है, तो आपका ऐप्लिकेशन निजी उपयोगकर्ता को ऐक्सेस कर सकता है डेटा शामिल है. अगर ऐसा नहीं है, तो अगले चरण पर जाएं. ध्यान दें: आपको यह देखना होगा कि हर बार ऐसी कार्रवाई करने की अनुमति होती है जिसके लिए आवश्यक है कि अनुमति.
  5. उपयोगकर्ता को यूज़र इंटरफ़ेस (यूआई) एलिमेंट में वजह बताएं, जिसमें यह साफ़ तौर पर बताया गया हो इससे पता चलता है कि आपका ऐप्लिकेशन किस डेटा को ऐक्सेस करने की कोशिश कर रहा है और इससे उसे क्या फ़ायदे मिलते हैं अगर उपयोगकर्ता ने खास अनुमति दी हो, तो उसे उपलब्ध कराई जा सकती है. इसके अलावा, आपका ऐप्लिकेशन अनुमति देने के लिए, उपयोगकर्ताओं को सिस्टम की सेटिंग पर भेजता है. संक्षिप्त निर्देश शामिल करें, जिसमें बताया गया हो कि उपयोगकर्ता अनुमति कैसे दे सकते हैं वहाँ. वजह बताने वाले यूज़र इंटरफ़ेस (यूआई) में यह विकल्प होना चाहिए कि उपयोगकर्ता अनुमति देने से ऑप्ट-आउट करें. जब उपयोगकर्ता न्योता स्वीकार कर लेता है की जानकारी के साथ, अगले चरण पर जाएं.
  6. उस खास अनुमति का अनुरोध करें जिसका ऐक्सेस आपके ऐप्लिकेशन को चाहिए उपयोगकर्ता का निजी डेटा. इसमें ऐसा हो सकता है कि यह पेज पर जाएं, जहां उपयोगकर्ता अनुमति दे सकते हैं. नापसंद करें रनटाइम की अनुमतियां होती हैं, जिनमें कोई पॉप-अप अनुमति वाला डायलॉग नहीं.
  7. उपयोगकर्ता का जवाब देखें – भले ही उन्होंने किसी खास अनुरोध को देने या न देने का विकल्प चुना हो अनुमति – onResume() तरीके में.
  8. अगर उपयोगकर्ता ने आपके ऐप्लिकेशन को अनुमति दी है, तो आपके पास निजी ऐप्लिकेशन को उपयोगकर्ता डेटा. अगर उपयोगकर्ता ने इसके बजाय अनुमति न दी हो, तो ग्रेसफ़ुली डिग्रेड करें ऐप्लिकेशन इस्तेमाल करने के अनुभव को तो यह उपयोगकर्ता को बिना किसी क्रिया के काम करने की जानकारी देता है. उस अनुमति से सुरक्षित किया गया है.
दूसरी इमेज: खास का एलान और अनुरोध करने के लिए वर्कफ़्लो Android पर अनुमतियां दी हैं.

विशेष अनुमतियों का अनुरोध करें

रनटाइम की अनुमतियों के उलट, उपयोगकर्ता को ऐप्लिकेशन का खास ऐक्सेस पेज से खास अनुमतियां देनी होंगी सिस्टम सेटिंग. ऐप्लिकेशन, इंटेंट का इस्तेमाल करके उपयोगकर्ताओं को वहां भेज सकते हैं, जिससे ऐप्लिकेशन रुक जाता है और दी गई विशेष अनुमति के लिए संबंधित सेटिंग पेज को लॉन्च करता है. जब उपयोगकर्ता ऐप्लिकेशन पर वापस आता है, तो ऐप्लिकेशन यह देख सकता है कि उसे अनुमति दी गई है या नहीं onResume() फ़ंक्शन में दी गई.

नीचे दिया गया सैंपल कोड, SCHEDULE_EXACT_ALARMS उपयोगकर्ताओं से खास अनुमति ली है:

val alarmManager = getSystemService<AlarmManager>()!!
when {
   // if permission is granted, proceed with scheduling exact alarms…
   alarmManager.canScheduleExactAlarms() -> {
       alarmManager.setExact(...)
   }
   else -> {
       // ask users to grant the permission in the corresponding settings page
       startActivity(Intent(ACTION_REQUEST_SCHEDULE_EXACT_ALARM))
   }
}

अनुमति की जांच करने और onResume() में उपयोगकर्ता के फ़ैसलों को मैनेज करने के लिए सैंपल कोड:

override fun onResume() {
   // ...

   if (alarmManager.canScheduleExactAlarms()) {
       // proceed with the action (setting exact alarms)
       alarmManager.setExact(...)
   }
   else {
       // permission not yet approved. Display user notice and gracefully degrade
       your app experience.
       alarmManager.setWindow(...)
   }
}

सबसे सही तरीके और सलाह

नीचे दिए सेक्शन में, कुछ सबसे सही तरीकों के बारे में बताया गया है. साथ ही, ध्यान रखने लायक कुछ बातें भी बताई गई हैं विशेष अनुमतियों का अनुरोध कर रहे हैं.

हर अनुमति की जांच करने का अपना तरीका होता है

खास अनुमतियां रनटाइम से अलग तरीके से काम करती हैं अनुमतियां हैं. इसके बजाय, अनुमतियों के एपीआई का रेफ़रंस देखें पेज पर जाकर, कस्टम ऐक्सेस जांच की सुविधा का इस्तेमाल करें फ़ंक्शन का उपयोग करें. उदाहरण के लिए: AlarmManager#canScheduleExactAlarms() के लिए SCHEDULE_EXACT_ALARMS अनुमति और Environment#isExternalStorageManager() के लिए MANAGE_EXTERNAL_STORAGE अनुमति.

संदर्भ के हिसाब से अनुरोध करें

रनटाइम की अनुमतियों की तरह ही, ऐप्लिकेशन को भी खास अनुमतियों का अनुरोध करना चाहिए उस स्थिति में जब उपयोगकर्ता किसी ऐसी खास कार्रवाई का अनुरोध करता है जिसके लिए अनुमति. उदाहरण के लिए, SCHEDULE_EXACT_ALARMS की अनुमति का अनुरोध करने के लिए इंतज़ार करें जब तक उपयोगकर्ता ईमेल को किसी तय समय पर भेजने के लिए शेड्यूल नहीं करता.

अनुरोध के बारे में बताएं

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