नहीं बदले जा सकने वाले डिवाइस आईडी

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

  • टेलीफ़ोन IMEI, MEID, ESN, और IMSI नंबर.
  • बिल्ड, सिम या यूएसबी के सीरियल नंबर.

डिवाइस आईडी कौन ऐक्सेस कर सकता है

डिवाइस आईडी, Android 10 वाले सभी डिवाइसों पर प्रतिबंधित हैं. भले ही, ऐप्लिकेशन Android 9 या उससे पहले के वर्शन को टारगेट करते हों. डिवाइस आईडी को ये लोग ऐक्सेस कर सकते हैं:

खास सुविधाओं वाले पैकेज का ऐक्सेस

डिवाइस आईडी ऐक्सेस करने के लिए, पैकेज के पास यह सुविधा होनी चाहिए. इसके पास Manifest.permission क्लास में READ_PRIVILEGED_PHONE_STATE अनुमति होनी चाहिए. साथ ही, इसे privapp-permission.xml फ़ाइल में अनुमति वाली सूची में शामिल किया जाना चाहिए. अनुमति वाली सूची बनाने की प्रोसेस के बारे में जानने के लिए, खास अनुमति वाली सूची बनाने की सुविधा देखें.

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

पाबंदी वाले डिवाइस आईडी और अपने-आप चुने गए मैक पते

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

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

इस स्क्रीन से पता चलता है कि निजता बनाए रखने के लिए, डिवाइस आईडी में किसी भी क्रम में लगाए गए मैक पते का इस्तेमाल किया जाता है या नहीं

पहली इमेज.नेटवर्क की जानकारी में निजता सेक्शन में, एमएसी पता बदला हुआ दिखता है.

डिवाइस आईडी एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन

डिवाइस आईडी एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन को Android 10 की ज़रूरी शर्तें पूरी करनी होंगी. अगर ऐसा नहीं है, तो डिवाइस आईडी ऐक्सेस करने पर, यह मैसेज दिखता है:

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

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

टेस्ट करना

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