जगह की जानकारी की अनुमतियों का अनुरोध करें

उपयोगकर्ता की निजता की सुरक्षा के लिए, जगह की जानकारी का इस्तेमाल करने वाले ऐप्लिकेशन को जगह की जानकारी का अनुरोध करना होगा अनुमतियां दी हैं.

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

इस पेज पर, जगह की जानकारी से जुड़ी अलग-अलग ज़रूरी शर्तों के बारे में बताया गया है. हर मामले में, जगह की जानकारी की अनुमतियों का अनुरोध करने के तरीके के बारे में जानें.

जगह की जानकारी को ऐक्सेस करने के तरीके

हर अनुमति में ये बातें शामिल होती हैं:

फ़ोरग्राउंड की जगह

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

  • नेविगेशन ऐप्लिकेशन में मौजूद सुविधा से, उपयोगकर्ताओं को मोड़-दर-मोड़ जानकारी मिल सकती है निर्देश.
  • मैसेजिंग ऐप्लिकेशन में, इस सुविधा से उपयोगकर्ता अपनी मौजूदा जगह की जानकारी शेयर कर सकते हैं किसी अन्य उपयोगकर्ता के साथ शेयर करते हैं.

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

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

    इसके अलावा, हमारा सुझाव है कि आप फ़ोरग्राउंड सेवा का एलान करें इसका location, जैसा कि इस कोड स्निपेट में दिखाया गया है. Android 10 (एपीआई) पर लेवल 29) और उससे ऊपर के लेवल के लिए, आपको फ़ोरग्राउंड सेवा के इस टाइप के बारे में बताना होगा.

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29) and higher. -->
    <service
        android:name="MyNavigationService"
        android:foregroundServiceType="location" ... >
        <!-- Any inner elements would go here. -->
    </service>
    

जब आपका ऐप्लिकेशन इनमें से किसी एक ACCESS_COARSE_LOCATION अनुमति या ACCESS_FINE_LOCATION अनुमति, जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है:

<manifest ... >
  <!-- Always include this permission -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

  <!-- Include only if your app benefits from precise location access. -->
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सुविधा

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

  • परिवार की जगह की जानकारी शेयर करने वाले ऐप्लिकेशन में, इस सुविधा से उपयोगकर्ता लगातार परिवार के सदस्यों के साथ जगह की जानकारी शेयर कर सकती हैं.
  • IoT ऐप्लिकेशन में, इस सुविधा से उपयोगकर्ता अपने होम डिवाइस को ऐसे कॉन्फ़िगर कर सकते हैं जिन्हें उपयोगकर्ता के घर से बाहर जाने पर बंद कर दिया जाता है और जब उपयोगकर्ता होम पेज पर वापस आता है.

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

Android 10 (एपीआई लेवल 29) और उसके बाद के वर्शन पर, आपको ACCESS_BACKGROUND_LOCATION बैकग्राउंड में जगह की जानकारी का अनुरोध करने के लिए, आपके ऐप्लिकेशन के मेनिफ़ेस्ट में अनुमति रनटाइम पर ऐक्सेस करने की सुविधा मिलती है. इसके पुराने वर्शन पर Android पर, आपके ऐप्लिकेशन को फ़ोरग्राउंड लोकेशन का ऐक्सेस अपने-आप मिल जाता है उसे बैकग्राउंड में जगह की जानकारी का ऐक्सेस भी मिलता है.

<manifest ... >
  <!-- Required only when requesting background location access on
       Android 10 (API level 29) and higher. -->
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

सटीक जानकारी

Android पर, जगह की जानकारी के ये लेवल काम करते हैं:

आस-पास
डिवाइस की जगह की अनुमानित जानकारी देता है. अगर इस जगह का अनुमान LocationManagerService या FusedLocationProvider, यह अनुमान करीब 3 वर्ग किलोमीटर (करीब 1.2 वर्ग) के अंदर सटीक है मील). जब आप ACCESS_COARSE_LOCATION अनुमति का एलान करें, लेकिन ACCESS_FINE_LOCATION की अनुमति.
सटीक
डिवाइस की जगह की सटीक जानकारी देता है. अगर जगह की जानकारी का अनुमान LocationManagerService या FusedLocationProvider से है, यह अनुमान आम तौर पर करीब 50 मीटर (160 फ़ीट) के अंदर होता है. कभी-कभी ऐसा भी होता है कुछ मीटर (10 फ़ीट) या इससे कम दूरी पर सटीक होने चाहिए. आपका ऐप्लिकेशन ये रिसीव कर सकता है ACCESS_FINE_LOCATION का एलान करने पर, जगहों की इस सटीक जानकारी के साथ अनुमति.

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

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

रनटाइम के दौरान जगह की जानकारी ऐक्सेस करने का अनुरोध करें

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

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

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

उपयोगकर्ता सिर्फ़ जगह की अनुमानित जानकारी दे सकता है

Android 12 (एपीआई लेवल 31) या उसके बाद के वर्शन पर, उपयोगकर्ता यह अनुरोध कर सकते हैं कि आपका ऐप्लिकेशन केवल अनुमानित स्थान जानकारी, तब भी जब आपका ऐप्लिकेशन ACCESS_FINE_LOCATION रनटाइम की अनुमति का इस्तेमाल करें.

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

ACCESS_FINE_LOCATION must be requested with ACCESS_COARSE_LOCATION.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

जब आपका ऐप्लिकेशन, ACCESS_FINE_LOCATION और ACCESS_COARSE_LOCATION, दोनों का अनुरोध करता है, सिस्टम की अनुमतियों वाले डायलॉग बॉक्स में, उपयोगकर्ता के लिए ये विकल्प शामिल होते हैं:

  • सटीक: इससे आपके ऐप्लिकेशन को जगह की सटीक जानकारी मिल पाती है.
  • अनुमानित: इससे आपका ऐप्लिकेशन, जगह की सिर्फ़ अनुमानित जानकारी हासिल कर पाता है.

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

Android 12 और उसके बाद वाले वर्शन में, उपयोगकर्ता सिस्टम की सेटिंग में जा सकते हैं किसी भी ऐप्लिकेशन के लिए जगह की सटीक जानकारी सेट की जा सकती है. भले ही, वह ऐप्लिकेशन टारगेट SDK टूल का वर्शन. यह बात तब भी लागू होती है, जब आपका ऐप्लिकेशन किसी डिवाइस पर इंस्टॉल किया गया हो Android 11 या इससे पहले के वर्शन पर चल रहा है और फिर उपयोगकर्ता, Android 12 या इसके बाद के वर्शन वाले डिवाइस पर काम करता हो.

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

उपयोगकर्ता की पसंद से, दी गई अनुमतियों पर असर पड़ता है

नीचे दी गई टेबल में वे अनुमतियां दिखाई गई हैं जो सिस्टम आपके ऐप्लिकेशन को देता है. अनुमतियों के रनटाइम डायलॉग में उपयोगकर्ता जो विकल्प चुनता है उसके आधार पर:

सटीक आस-पास
ऐप्लिकेशन इस्तेमाल करते समय ACCESS_FINE_LOCATION और
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
सिर्फ़ इस बार अनुमति दें ACCESS_FINE_LOCATION और
ACCESS_COARSE_LOCATION
ACCESS_COARSE_LOCATION
अस्वीकार करें जगह की जानकारी की अनुमति नहीं है जगह की जानकारी की अनुमति नहीं है

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

Kotlin

val locationPermissionRequest = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
                // Precise location access granted.
            }
            permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
                // Only approximate location access granted.
            } else -> {
                // No location access granted.
            }
        }
    }

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(arrayOf(
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION))

Java

ActivityResultLauncher<String[]> locationPermissionRequest =
    registerForActivityResult(new ActivityResultContracts
        .RequestMultiplePermissions(), result -> {
            Boolean fineLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_FINE_LOCATION, false);
            Boolean coarseLocationGranted = result.getOrDefault(
                    Manifest.permission.ACCESS_COARSE_LOCATION,false);
            if (fineLocationGranted != null && fineLocationGranted) {
                // Precise location access granted.
            } else if (coarseLocationGranted != null && coarseLocationGranted) {
                // Only approximate location access granted.
            } else {
                // No location access granted.
            }
        }
    );

// ...

// Before you perform the actual permission request, check whether your app
// already has the permissions, and whether your app needs to show a permission
// rationale dialog. For more details, see Request permissions.
locationPermissionRequest.launch(new String[] {
    Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.ACCESS_COARSE_LOCATION
});

जगह की सटीक जानकारी पर अपग्रेड करने का अनुरोध करें

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

उपयोगकर्ता से आपके ऐप्लिकेशन के जगह की जानकारी के ऐक्सेस को अनुमानित से बदलकर ठीक है, ये करें:

  1. अगर ज़रूरी हो, तो बताएं कि आपके ऐप्लिकेशन को अनुमति है.
  2. ACCESS_FINE_LOCATION और ACCESS_COARSE_LOCATION की अनुमतियों का अनुरोध करें फिर से एक साथ. क्योंकि उपयोगकर्ता ने सिस्टम को पहले ही अनुमति दे दी है आपके ऐप के लिए अनुमानित जगह की जानकारी है, तो सिस्टम डायलॉग इस बार अलग है, क्योंकि को चौथी इमेज में दिखाया गया है और इमेज 5:
डायलॉग में &#39;सटीक में बदलें&#39; विकल्प मौजूद हैं
         जगह की जानकारी&#39;, &#39;सिर्फ़ इस बार अनुमति दें&#39;, और &#39;अस्वीकार करें&#39;.
चौथी इमेज. उपयोगकर्ता पहले ही डायलॉग बॉक्स में, अनुमानित और ऐप्लिकेशन इस्तेमाल करते समय चुनी गई तीसरी इमेज से.
डायलॉग में &#39;सिर्फ़ इस बार&#39; विकल्प शामिल हैं और
         &#39;अस्वीकार करें&#39;.
पांचवीं इमेज. उपयोगकर्ता पहले ही अनुमानित और सिर्फ़ इस बार चुनी गईं (इस समय से डायलॉग में तीसरी इमेज).

शुरुआत में, सिर्फ़ फ़ोरग्राउंड लोकेशन का अनुरोध करें

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

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

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

इंक्रीमेंटल अनुरोधों को पूरा करने का तरीका यहां बताया गया है:

  1. सबसे पहले, आपके ऐप्लिकेशन को उन सुविधाओं के बारे में जानकारी देनी चाहिए जिनके लिए फ़ोरग्राउंड लोकेशन का ऐक्सेस, जैसे कि "जगह की जानकारी शेयर करें" इमेज 1 में फ़ीचर या "मौजूदा स्थान दिखाएं" इमेज 2 में दी गई है.

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

  2. बाद में, जब उपयोगकर्ता ऐसी सुविधाओं को एक्सप्लोर करता है जिनके लिए बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सुविधा, बैकग्राउंड में जगह की जानकारी का अनुरोध करें ऐक्सेस दें.

अगर ज़रूरी हो, तो बैकग्राउंड में जगह की जानकारी ऐक्सेस करने का अनुरोध करें

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

अनुमति वाले डायलॉग का कॉन्टेंट, टारगेट SDK टूल के वर्शन के हिसाब से तय होता है

जब आपके ऐप्लिकेशन की कोई सुविधा, चलने वाले डिवाइस पर बैकग्राउंड में जगह की जानकारी का अनुरोध करती है Android 10 (एपीआई लेवल 29) के लिए, सिस्टम की अनुमतियों वाले डायलॉग बॉक्स में एक विकल्प शामिल होता है इसका नाम हमेशा के लिए अनुमति दें है. यदि उपयोगकर्ता यह विकल्प चुनता है, तो सुविधा आपके ऐप्लिकेशन को बैकग्राउंड में जगह की जानकारी का ऐक्सेस मिल जाता है.

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

इन सबसे सही तरीकों को अपनाकर, उपयोगकर्ताओं को इस सेटिंग पेज पर जाने में मदद की जा सकती है बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति का अनुरोध करते समय. अनुमति देने की प्रक्रिया अनुमति, आपके ऐप्लिकेशन के टारगेट SDK टूल के वर्शन पर निर्भर करती है.

ऐप्लिकेशन, Android 11 या उसके बाद के वर्शन को टारगेट करता है

अगर आपके ऐप्लिकेशन को ACCESS_BACKGROUND_LOCATION की अनुमति नहीं दी गई है और shouldShowRequestPermissionRationale() true नतीजे के साथ, शिक्षा से जुड़ा एक यूज़र इंटरफ़ेस (यूआई) दिखाता है. इस यूज़र इंटरफ़ेस (यूआई) में ये चीज़ें शामिल होती हैं:

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

ऐप्लिकेशन, Android 10 या इससे पहले के वर्शन को टारगेट करता है

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

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

बैकग्राउंड में जगह की जानकारी की सटीक जानकारी पर, उपयोगकर्ता का असर पड़ सकता है

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

बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति का रिमाइंडर

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

अपने ऐप्लिकेशन के SDK टूल डिपेंडेंसी में जगह की जानकारी से जुड़ी ज़रूरी शर्तों की जांच करना

यह देखें कि आपका ऐप्लिकेशन ऐसे SDK टूल का इस्तेमाल करता है या नहीं जो जगह की जानकारी की अनुमतियों पर निर्भर होते हैं, खास तौर पर, ACCESS_FINE_LOCATION की अनुमति. Medium पर यह लेख पढ़ें अपने SDK टूल के काम करने के तरीके के बारे में जानकारी डिपेंडेंसी.

अन्य संसाधन

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

कोड लैब

वीडियो

सैंपल

  • जगह की जानकारी की अनुमतियों के इस्तेमाल के बारे में जानकारी देने वाला सैंपल ऐप्लिकेशन.