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

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

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

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

  • जब तक उपयोगकर्ता आपके ऐप्लिकेशन को 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);