ज़्यादा संवेदनशील जानकारी के ऐक्सेस के बारे में बताना

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

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

खास तौर पर, पक्का करें कि आपने अपने ऐप्लिकेशन में ये काम किए हों:

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

प्राइवसी डैशबोर्ड

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

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

डेटा ऐक्सेस करने की वजह बताएं

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

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

  1. ऐसी गतिविधि जोड़ें जो शुरू होने पर, यह बताए कि आपका ऐप्लिकेशन किसी खास तरह के डेटा को ऐक्सेस करने की कार्रवाई क्यों करता है. इस गतिविधि में, android:permission एट्रिब्यूट को START_VIEW_PERMISSION_USAGE पर सेट करें.

    अगर आपका ऐप्लिकेशन Android 12 या इसके बाद के वर्शन को टारगेट करता है, तो आपको साफ़ तौर पर android:exported एट्रिब्यूट के लिए कोई वैल्यू तय करनी होगी.

  2. नई जोड़ी गई गतिविधि में यह इंटेंट फ़िल्टर जोड़ें:

    <!-- android:exported required if you target Android 12. -->
    <activity android:name=".DataAccessRationaleActivity"
              android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
              android:exported="true">
           <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on
                your app permission's page in system settings.
                VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information
                icon on the Privacy Dashboard screen. -->
        <intent-filter>
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
           <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" />
           <category android:name="android.intent.category.DEFAULT" />
           ...
        </intent-filter>
    </activity>
  3. तय करें कि डेटा ऐक्सेस करने की वजह बताने वाली गतिविधि में क्या दिखना चाहिए. उदाहरण के लिए, अपने ऐप्लिकेशन की वेबसाइट या सहायता केंद्र का कोई लेख दिखाया जा सकता है. आपका ऐप्लिकेशन किस तरह का डेटा ऐक्सेस करता है और उसे कब ऐक्सेस किया गया, इस बारे में ज़्यादा जानकारी देने के लिए, सिस्टम में शामिल अतिरिक्त जानकारी को मैनेज करें. ऐसा तब करें, जब सिस्टम अनुमति के इस्तेमाल के इंटेंट को शुरू करता है:

    • अगर सिस्टम ACTION_VIEW_PERMISSION_USAGE को शुरू करता है, तो आपका ऐप्लिकेशन EXTRA_PERMISSION_GROUP_NAME के लिए वैल्यू हासिल कर सकता है.
    • अगर सिस्टम ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD को शुरू करता है, तो आपका ऐप्लिकेशन EXTRA_PERMISSION_GROUP_NAME, EXTRA_ATTRIBUTION_TAGS, EXTRA_START_TIME, और EXTRA_END_TIME की वैल्यू हासिल कर सकता है.

आपने किस तरह के इंटेंट फ़िल्टर जोड़े हैं, इसके आधार पर उपयोगकर्ताओं को कुछ स्क्रीन पर आपके ऐप्लिकेशन के नाम के बगल में जानकारी का आइकॉन दिखता है:

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

जब उपयोगकर्ता उस आइकॉन को चुनते हैं, तो आपके ऐप्लिकेशन की वजह बताने वाली गतिविधि शुरू हो जाती है.

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

इंडिकेटर

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

स्क्रीन पर इंडिकेटर की जगह की पहचान करना

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

Kotlin

view.setOnApplyWindowInsetsListener { view, windowInsets ->
    val indicatorBounds = windowInsets.getPrivacyIndicatorBounds()
    // change your UI to avoid overlapping
    windowInsets
}

टॉगल

क्विक सेटिंग टाइल पर, 'कैमरे का ऐक्सेस' और 'माइक का ऐक्सेस' लेबल लगा होता है
तीसरी इमेज. क्विक सेटिंग में माइक्रोफ़ोन और कैमरा टॉगल करने की सुविधा.

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

कैमरे और माइक्रोफ़ोन के टॉगल का असर, डिवाइस पर मौजूद सभी ऐप्लिकेशन पर पड़ता है:

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

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

यह देखना कि डिवाइस पर यह सुविधा काम करती है या नहीं

कोई डिवाइस, माइक्रोफ़ोन और कैमरा टॉगल करने की सुविधा के साथ काम करता है या नहीं, यह देखने के लिए यहां दिए गए कोड स्निपेट में मौजूद लॉजिक जोड़ें:

Kotlin

val sensorPrivacyManager = applicationContext
        .getSystemService(SensorPrivacyManager::class.java)
        as SensorPrivacyManager
val supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE)
val supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA)

Java

SensorPrivacyManager sensorPrivacyManager = getApplicationContext()
        .getSystemService(SensorPrivacyManager.class);
boolean supportsMicrophoneToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.MICROPHONE);
boolean supportsCameraToggle = sensorPrivacyManager
        .supportsSensorToggle(Sensors.CAMERA);