अनुमति के अनुरोधों की संख्या कम करें

हम ऐप्लिकेशन की क्वालिटी बेहतर बनाने और लोगों की निजता को सुरक्षित रखने के लिए, सुझाव देते हैं कि आप अपने ऐप्लिकेशन में अनुमतियों के इस्तेमाल को कम करें. इससे लोगों को बेहतर क्वालिटी वाले ऐसे ऐप्लिकेशन ढूंढने और इस्तेमाल करने में मदद मिलती है जो सुरक्षित और भरोसेमंद हों.

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

अनुमतियों के इस्तेमाल को कम करने के कई तरीके हैं:

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

अगर आपको किसी अनुमति का एलान करना है, तो हमेशा लोगों के फ़ैसले का सम्मान करें. साथ ही, अपने ऐप्लिकेशन के अनुभव को बेहतर बनाने का तरीका उपलब्ध कराएं.

इस पेज पर, ऐसे कई इस्तेमाल के उदाहरण दिए गए हैं जिन्हें आपका ऐप्लिकेशन, किसी भी अनुमति की ज़रूरत का एलान किए बिना पूरा कर सकता है.

आस-पास की जगहें दिखाना

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

अन्य इस्तेमाल के उदाहरणों के लिए, डिवाइस की जगह की जानकारी का ज़्यादा सटीक अनुमान की ज़रूरत पड़ सकती है. सिर्फ़ उन स्थितियों में, ACCESS_FINE_LOCATION अनुमति का एलान किया जा सकता है.

फ़ाइलें बनाना और उन्हें ऐक्सेस करना

Android में, स्टोरेज या सेंसर से जुड़ी किसी भी अनुमति का एलान किए बिना, फ़ाइलें बनाई और ऐक्सेस की जा सकती हैं.

मीडिया फ़ाइलें खोलना

ऐसा हो सकता है कि आपका ऐप्लिकेशन, लोगों को अपनी फ़ोटो और वीडियो चुनने की अनुमति दे. जैसे, मैसेज अटैचमेंट या प्रोफ़ाइल फ़ोटो के लिए.

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

अगर आपके ऐप्लिकेशन को फ़ोटो पिकर का इस्तेमाल किए बिना, मीडिया फ़ाइलों को ऐक्सेस करना है, तो आपको स्टोरेज की किसी अनुमति का एलान करने की ज़रूरत नहीं है:

  • अगर आपका ऐप्लिकेशन बनाई गई मीडिया फ़ाइलों को ऐक्सेस करता है, तो आपके ऐप्लिकेशन के पास मीडिया स्टोर में इन फ़ाइलों का ऐक्सेस पहले से ही होता है इन फ़ाइलों का ऐक्सेस मीडिया स्टोर में होता है.
  • अगर आपका ऐप्लिकेशन, दूसरे ऐप्लिकेशन से बनाई गई मीडिया फ़ाइलों को ऐक्सेस करता है, तो Storage Access Framework का इस्तेमाल करें.

दस्तावेज़ खोलना

ऐसा हो सकता है कि आपका ऐप्लिकेशन, लोगों के बनाए गए दस्तावेज़ दिखाए. ये दस्तावेज़, आपके ऐप्लिकेशन या किसी दूसरे ऐप्लिकेशन में बनाए गए हो सकते हैं. इसका एक आम उदाहरण, टेक्स्ट फ़ाइल है.

इस स्थिति में, READ_EXTERNAL_STORAGE अनुमति का एलान सिर्फ़ पुराने डिवाइसों के साथ काम करने के लिए करें. android:maxSdkVersion को 28 पर सेट करें.

दस्तावेज़ किस ऐप्लिकेशन में बनाया गया है, इसके आधार पर इनमें से कोई एक काम करें:

एक फ़ोटो खींचना

ऐसा हो सकता है कि लोग, आपके ऐप्लिकेशन में फ़ोटो लें. इसके लिए, पहले से इंस्टॉल किए गए सिस्टम कैमरा ऐप्लिकेशन का इस्तेमाल किया जा सकता है.

इस स्थिति में, CAMERA अनुमति का एलान न करें. इसके बजाय, ACTION_IMAGE_CAPTURE इंटेंट ऐक्शन लागू करें.

वीडियो रिकॉर्ड करना

ऐसा हो सकता है कि लोग, आपके ऐप्लिकेशन में वीडियो रिकॉर्ड करें. इसके लिए, पहले से इंस्टॉल किए गए सिस्टम कैमरा ऐप्लिकेशन का इस्तेमाल किया जा सकता है.

इस स्थिति में, CAMERA अनुमति का एलान न करें. इसके बजाय, ACTION_VIDEO_CAPTURE इंटेंट ऐक्शन लागू करें.

उस डिवाइस की पहचान करना जिस पर आपके ऐप्लिकेशन का कोई इंस्टेंस चल रहा है

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

इस स्थिति में, डिवाइस के IMEI को सीधे तौर पर ऐक्सेस न करें. दरअसल, Android 10 से ऐसा नहीं किया जा सकता. इसके बजाय, इनमें से कोई एक काम करें:

ब्लूटूथ की मदद से किसी डिवाइस से कनेक्ट करना

ऐसा हो सकता है कि आपका ऐप्लिकेशन, ब्लूटूथ की मदद से किसी दूसरे डिवाइस पर डेटा ट्रांसफ़र करके, बेहतर अनुभव दे.

इस सुविधा के लिए, ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATIION या BLUETOOTH_ADMIN अनुमतियों का एलान न करें. इसके बजाय, कंपैनियन डिवाइस को डिवाइस से जोड़ना का इस्तेमाल करें.

पेमेंट के लिए इस्तेमाल होने वाले कार्ड का नंबर अपने-आप डालना

Google Play services, एक लाइब्रेरी उपलब्ध कराता है. इसकी मदद से, पेमेंट के लिए इस्तेमाल होने वाला कार्ड का नंबर अपने-आप डाला जा सकता है. CAMERA अनुमति का एलान करने के बजाय, आप डेबिट और क्रेडिट कार्ड की पहचान करने वाली लाइब्रेरी का इस्तेमाल कर सकते हैं.

फ़ोन कॉल और मैसेज मैनेज करना

Android और Google Play services, ऐसी लाइब्रेरी उपलब्ध कराते हैं जिनकी मदद से, फ़ोन कॉल या मैसेज से जुड़ी किसी भी अनुमति का एलान किए बिना, फ़ोन कॉल और मैसेज मैनेज किए जा सकते हैं.

एक बार इस्तेमाल होने वाला पासवर्ड अपने-आप डालना

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

Google Play services की मदद से चलने वाले डिवाइसों पर इस सुविधा के लिए, READ_SMS अनुमति का एलान न करें. इसके बजाय, SMS Retriever API का इस्तेमाल करें.

अन्य डिवाइसों पर, अगर आपका ऐप्लिकेशन Android 8.0 (एपीआई लेवल 26) या उसके बाद के वर्शन को टारगेट करता है, तो ऐप्लिकेशन के लिए खास टोकन जनरेट करने के लिए createAppSpecificSmsToken() का इस्तेमाल करें. इस टोकन को किसी दूसरे ऐप्लिकेशन या सेवा को पास करें, जो पुष्टि करने के लिए एसएमएस भेज सकती है.

किसी व्यक्ति के फ़ोन नंबर की पुष्टि करना

आपके ऐप्लिकेशन को किसी व्यक्ति के फ़ोन नंबर की सुरक्षित तरीके से पुष्टि करने की अनुमति देने के लिए, सुझाया गया समाधान Digital Credentials API है. इस एपीआई का इस्तेमाल सीधे तौर पर या इसके साथ काम करने वाले कई एग्रीगेटर के ज़रिए किया जा सकता है. इससे, डिवाइस की संवेदनशील अनुमतियों का अनुरोध किए बिना, लोगों के खाते की जानकारी की पुष्टि भरोसेमंद तरीके से की जा सकती है. Firebase के समाधान के लिए, Firebase फ़ोन नंबर की पुष्टि करने की सुविधा देखें.

इसके अलावा, SMS Retriever API का इस्तेमाल करके, एक बार इस्तेमाल होने वाले पासवर्ड की मदद से, किसी व्यक्ति के फ़ोन नंबर की पुष्टि की जा सकती है, SMS Retriever API का इस्तेमाल करके.

लोगों का फ़ोन नंबर अपने-आप डालना

बेहतर तरीके से बिक्री या सहायता उपलब्ध कराने के लिए, ऐसा हो सकता है कि आपका ऐप्लिकेशन, लोगों को अपने डिवाइस का फ़ोन नंबर अपने-आप डालने की अनुमति दे.

Google Play services की मदद से चलने वाले डिवाइसों पर इस सुविधा के लिए, READ_PHONE_STATE अनुमति का एलान न करें. इसके बजाय, Phone Number Hint लाइब्रेरी का इस्तेमाल करें.

फ़ोन कॉल फ़िल्टर करना

लोगों के लिए, गैर-ज़रूरी रुकावटों को कम करने के लिए, ऐसा हो सकता है कि आपका ऐप्लिकेशन, स्पैम के लिए फ़ोन कॉल फ़िल्टर करे.

इस सुविधा के लिए, READ_PHONE_STATE अनुमति का एलान न करें. इसके बजाय, CallScreeningService API का इस्तेमाल करें.

फ़ोन कॉल करना

ऐसा हो सकता है कि आपका ऐप्लिकेशन, किसी संपर्क की जानकारी पर टैप करके फ़ोन कॉल करने की सुविधा दे.

इस सुविधा के लिए, ACTION_CALL ऐक्शन के बजाय, ACTION_DIAL इंटेंट ऐक्शन का इस्तेमाल करें. ACTION_CALL के लिए, इंस्टॉल के समय CALL_PHONE अनुमति की ज़रूरत होती है. इससे, ऐसे डिवाइसों पर आपका ऐप्लिकेशन इंस्टॉल नहीं किया जा सकता जिन पर कॉल नहीं किए जा सकते. जैसे, कुछ टैबलेट.

आपका ऐप्लिकेशन रुकने पर, मीडिया को रोकना

अगर लोगों को फ़ोन कॉल आता है या अगर लोगों ने अलार्म सेट किया है, तो आपके ऐप्लिकेशन को मीडिया चलाने की सुविधा को तब तक रोकना चाहिए, जब तक कि आपका ऐप्लिकेशन ऑडियो फ़ोकस वापस हासिल न कर ले.

इस सुविधा के लिए, READ_PHONE_STATE अनुमति का एलान न करें. इसके बजाय, onAudioFocusChange() इवेंट हैंडलर लागू करें. यह तब अपने-आप चलता है, जब सिस्टम अपना ऑडियो फ़ोकस बदलता है. ऑडियो फ़ोकस लागू करने के तरीके के बारे में ज़्यादा जानें .

बारकोड स्कैन करना

Android में, Google Code Scanner API की सुविधा शामिल है. यह API, Google Play services की मदद से काम करता है. इसकी मदद से, कैमरा की किसी भी अनुमति का एलान किए बिना, बारकोड डिकोड किए जा सकते हैं. इस एपीआई से, लोगों की निजता को सुरक्षित रखने में मदद मिलती है. साथ ही, बारकोड स्कैन करने के लिए, आपको कस्टम यूज़र इंटरफ़ेस (यूआई) बनाने की ज़रूरत नहीं पड़ती.

एपीआई, बारकोड स्कैन करता है और सिर्फ़ स्कैन के नतीजे आपके ऐप्लिकेशन को दिखाता है. इमेज को उपयोगकर्ता के डिवाइस पर प्रोसेस किया जाता है. Google, कोई डेटा या स्कैन के नतीजे सेव नहीं करता.

अगर आपके ऐप्लिकेशन को, इस्तेमाल के जटिल उदाहरणों या बारकोड फ़ॉर्मैट के लिए सहायता की ज़रूरत है या अगर उसे कस्टम यूज़र इंटरफ़ेस (यूआई) की ज़रूरत है, तो इसके बजाय ML Kit बारकोड स्कैनिंग एपीआई का इस्तेमाल करें.

इस्तेमाल नहीं की गई अनुमतियां रीसेट करना

Android में, रनटाइम की इस्तेमाल नहीं की गई अनुमतियों को उनकी डिफ़ॉल्ट, अस्वीकार की गई स्थिति में रीसेट करने के कई तरीके हैं.

डिज़ाइन से जुड़े दिशा-निर्देश पढ़ें.

रनटाइम अनुमतियों का अनुरोध करना

यह तय करने के बाद कि आपके ऐप्लिकेशन को रनटाइम की अनुमतियों का एलान और अनुरोध करना है, ऐसा करने के लिए, तय वर्कफ़्लो का पालन करें.

डिज़ाइन से जुड़े दिशा-निर्देश पढ़ें.

यह बताना कि आपके ऐप्लिकेशन को अनुमतियों की ज़रूरत क्यों है

requestPermissions() का इस्तेमाल करने पर, एक डायलॉग दिखता है. इसमें यह बताया जाता है कि आपका ऐप्लिकेशन किन अनुमतियों का इस्तेमाल करना चाहता है. हालांकि, इसमें यह नहीं बताया जाता कि ऐसा क्यों किया जा रहा है. इससे लोगों को परेशानी हो सकती है.

इस डायलॉग को कब और कैसे दिखाना है, इस बारे में ज़्यादा जानकारी और सुझाव पाने के लिए, डिज़ाइन से जुड़े दिशा-निर्देश पढ़ें.

अनुमति न मिलने की समस्या को हल करना

आपके ऐप्लिकेशन को लोगों को यह समझने में मदद करनी चाहिए कि अनुमति न देने पर क्या असर पड़ेगा. यह जानकारी, अनुमति न देने का विकल्प चुनने से पहले और बाद में मिलनी चाहिए.

डिज़ाइन से जुड़े दिशा-निर्देश पढ़ें.