Android 11 में अनुमतियों के अपडेट

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

एक बार के लिए दी जाने वाली अनुमतियां

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

यह जानें कि सिस्टम, एक बार के लिए डेटा कैसे मैनेज करता है अनुमतियां हैं.

इस्तेमाल न होने वाले ऐप्लिकेशन से अनुमतियां अपने-आप रीसेट होने की सुविधा

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

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

अनुमति संवाद किसको दिखे

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

यह पता लगाने के लिए कि किसी ऐप्लिकेशन को, अनुमतियों को हमेशा के लिए अस्वीकार कर दिया गया है या नहीं (डीबग करने के लिए और परीक्षण के लिए), निम्नलिखित कमांड का उपयोग करें:

adb shell dumpsys package PACKAGE_NAME

जहां PACKAGE_NAME, जांच किए जाने वाले पैकेज का नाम होता है.

कमांड के आउटपुट में ऐसे सेक्शन होते हैं जो इस तरह दिखते हैं:

...
runtime permissions:
  android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
  android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
  android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED]
...

जिन अनुमतियों को उपयोगकर्ता ने एक बार अस्वीकार कर दिया है उन्हें USER_SET ने फ़्लैग किया है. अस्वीकार करें को दो बार चुनकर, हमेशा के लिए अस्वीकार की गई अनुमतियां USER_FIXED ने फ़्लैग किया.

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

adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed

आपको जो अनुमति चाहिए उसका नाम PERMISSION_NAME है रीसेट करें. Android ऐप्लिकेशन की अनुमतियों की पूरी सूची देखने के लिए, अनुमतियां एपीआई पर जाएं रेफ़रंस पेज पर जाएं.

अनुमति मैनेज करने के तरीके के बारे में ज़्यादा जानें अस्वीकार किया गया है.

सिस्टम अलर्ट विंडो में बदलाव

Android 11, ऐप्लिकेशन के लिए कई बदलाव करता है. SYSTEM_ALERT_WINDOW अनुमति. ये बदलाव, उपयोगकर्ताओं को सुरक्षित रखने के लिए किए गए हैं, ताकि वे अनुमति दे सकें और सोच-समझ कर बनाएं.

अनुरोध करने पर, कुछ ऐप्लिकेशन को system_ALERT_WINDOW की अनुमति अपने-आप मिल जाती है

ऐप्लिकेशन की कुछ क्लास को अपने-आप SYSTEM_ALERT_WINDOW की अनुमति मिल जाती है अनुरोध करने पर अनुमति:

  • ऐसा कोई भी ऐप्लिकेशन जिसमें ROLE_CALL_SCREENING और SYSTEM_ALERT_WINDOW के अनुरोध को अपने-आप अनुमति दे दी जाती है. अगर आपने ऐप्लिकेशन ROLE_CALL_SCREENING खो देता है, इसलिए यह अनुमति खो देता है.

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

इन ऐप्लिकेशन के लिए मैसेज भेजने की ज़रूरत नहीं है ACTION_MANAGE_OVERLAY_PERMISSION SYSTEM_ALERT_WINDOW की अनुमति पाने के लिए; ऐप्लिकेशन बस अनुरोध कर सकते हैं SYSTEM_ALERT_WINDOW सीधे.

MANAGE_OVERLAY_PERMISSION इंटेंट हमेशा उपयोगकर्ता को सिस्टम अनुमतियां स्क्रीन पर ले जाते हैं

Android 11 और इसके बाद के वर्शन में, ACTION_MANAGE_OVERLAY_PERMISSION इंटेंट हमेशा उपयोगकर्ता को टॉप-लेवल की सेटिंग स्क्रीन पर ले जाते हैं, जहां उपयोगकर्ता को SYSTEM_ALERT_WINDOW अनुमतियां दी जाएं. इंटेंट में मौजूद किसी भी package: डेटा को अनदेखा कर दिया जाता है.

Android के पुराने वर्शन में, ACTION_MANAGE_OVERLAY_PERMISSION इंटेंट किसी पैकेज को तय कर सकता है, जो उपयोगकर्ता को ऐप्लिकेशन की खास स्क्रीन पर ले जाएगा ऐसा करने की अनुमति नहीं है. यह सुविधा इस तारीख से काम नहीं करेगी Android 11. इसके बजाय, उपयोगकर्ता को पहले वह ऐप्लिकेशन चुनना होगा जो वह चाहता है करने की अनुमति देने या रद्द करने के लिए किया जा सकता है. इस बदलाव का मकसद उपयोगकर्ताओं को सुरक्षित रखना है सोच-समझकर अनुमति दें.

फ़ोन नंबर

Android 11, फ़ोन से जुड़ी उस अनुमति को बदल देता है जो आपके ऐप्लिकेशन में मौजूद है का इस्तेमाल करती है.

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

  • दोनों में getLine1Number() तरीका TelephonyManager क्लास और TelecomManager क्लास.
  • इसमें इस्तेमाल न किया जा सकने वाला getMsisdn() तरीका, TelephonyManager क्लास.

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

  1. READ_PHONE_STATE के एलान को बदलें, ताकि आपका ऐप्लिकेशन की अनुमति सिर्फ़ Android 10 (एपीआई लेवल 29) और इससे पहले के वर्शन पर मिलेगी.
  2. READ_PHONE_NUMBERS की अनुमति जोड़ें.

नीचे दिए गए मेनिफ़ेस्ट के एलान वाले स्निपेट में इस प्रोसेस के बारे में बताया गया है:

<manifest>
    <!-- Grants the READ_PHONE_STATE permission only on devices that run
         Android 10 (API level 29) and lower. -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"
                     android:maxSdkVersion="29" />
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
</manifest>

अन्य संसाधन

Android 11 की अनुमतियों में हुए बदलावों के बारे में ज़्यादा जानने के लिए, नीचे दी गई सामग्री:

वीडियो

हमारे सिस्टम में, निजता से जुड़े नए बदलावों के साथ डेवलप किया जा रहा है Android 11