Android 13 (एपीआई लेवल 33) या इसके बाद के वर्शन को टारगेट करने वाले और वाई-फ़ाई कनेक्शन मैनेज करने वाले ऐप्लिकेशन को
NEARBY_WIFI_DEVICES
रनटाइम की अनुमति का अनुरोध करना चाहिए. इस अनुमति से, आस-पास मौजूद वाई-फ़ाई डिवाइसों को ऐक्सेस करने वाले ऐप्लिकेशन को आसानी से सही ठहराया जा सकता है. Android के पिछले वर्शन पर, इन ऐप्लिकेशन को ACCESS_FINE_LOCATION अनुमति का एलान करना पड़ता था.
यह अनुमति, आस-पास मौजूद डिवाइसों के ग्रुप का हिस्सा है
NEARBY_WIFI_DEVICES की अनुमति, आस-पास मौजूद डिवाइस अनुमतियों के समूह का हिस्सा है. Android 12 (एपीआई लेवल 31) में जोड़े गए इस ग्रुप में, ब्लूटूथ और अल्ट्रा-वाइडबैंड से जुड़ी अनुमतियां भी शामिल हैं. जब इस अनुमतियों के समूह से किसी भी तरह की अनुमतियों का अनुरोध किया जाता है, तो सिस्टम एक रनटाइम डायलॉग दिखाता है. साथ ही, उपयोगकर्ता से आपके ऐप्लिकेशन को आस-पास मौजूद डिवाइसों को ऐक्सेस करने की अनुमति देने के लिए कहता है.
सिस्टम सेटिंग में, उपयोगकर्ता को आस-पास मौजूद डिवाइसों की अनुमतियों को एक ग्रुप के तौर पर चालू और बंद करना होगा. उदाहरण के लिए, उपयोगकर्ता किसी ऐप्लिकेशन के लिए, वाई-फ़ाई का ऐक्सेस बंद नहीं कर सकते, लेकिन ब्लूटूथ का ऐक्सेस चालू रख सकते हैं.
यह साफ़ तौर पर बताएं कि आपका ऐप्लिकेशन, जगह की सटीक जानकारी का इस्तेमाल नहीं करता
Android 13 या इसके बाद के वर्शन को टारगेट करते समय, यह देखें कि क्या आपका ऐप्लिकेशन कभी वाई-फ़ाई एपीआई से जगह की जानकारी लेता है. अगर नहीं, तो आपको इस बात पर ज़ोर देना चाहिए. यह दावा करने के लिए, अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में usesPermissionFlags एट्रिब्यूट को neverForLocation पर सेट करें. इसके लिए, यहां दिए गए कोड स्निपेट को देखें. यह प्रोसेस, ब्लूटूथ डिवाइस की जानकारी का इस्तेमाल जगह की जानकारी के लिए कभी नहीं किया जाता का दावा करने के लिए की जाने वाली प्रोसेस जैसी ही है:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
पिछले वर्शन और कुछ एपीआई के लिए, जगह की जानकारी की अनुमति ज़रूरी है
कई वाई-फ़ाई एपीआई के लिए, ACCESS_FINE_LOCATION अनुमति की ज़रूरत होती है. भले ही, आपका ऐप्लिकेशन Android 13 या इसके बाद के वर्शन को टारगेट करता हो. उदाहरण के लिए, WifiManager क्लास के ये तरीके:
इसके अलावा, NEARBY_WIFI_DEVICES अनुमति सिर्फ़ Android 13 और इसके बाद के वर्शन पर उपलब्ध है. इसलिए, आपको अपने ऐप्लिकेशन में पुराने सिस्टम के साथ काम करने की सुविधा देने के लिए, ACCESS_FINE_LOCATION के लिए किए गए किसी भी एलान को बनाए रखना चाहिए. हालांकि, जब तक आपका ऐप्लिकेशन जगह की सटीक जानकारी पर निर्भर नहीं करता, तब तक इस अनुमति के लिए एसडीके का ज़्यादा से ज़्यादा वर्शन 32 पर सेट किया जा सकता है. इसके बारे में यहां दिए गए कोड स्निपेट में बताया गया है:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
ऐसे एपीआई देखना जिनके लिए अनुमति की ज़रूरत है
अगर आपका ऐप्लिकेशन Android 13 या इसके बाद के वर्शन को टारगेट करता है, तो आपको इनमें से किसी भी वाई-फ़ाई एपीआई को कॉल करने के लिए, NEARBY_WIFI_DEVICES अनुमति का एलान करना होगा:
WifiManagerWifiAwareManagerWifiAwareSessionWifiP2pManagerWifiRttManager
वाई-फ़ाई ऐक्सेस करने के वर्कफ़्लो
पहली इमेज में, Android 13 या इसके बाद के वर्शन वाले डिवाइसों पर, वाई-फ़ाई ऐक्सेस करने का वर्कफ़्लो दिखाया गया है. यह वर्कफ़्लो, Android 13 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए है. ध्यान दें कि जब तक आप यह दावा करते हैं कि आपका ऐप्लिकेशन, वाई-फ़ाई डिवाइस की जानकारी से जगह की सटीक जानकारी नहीं लेता, तब तक आपको ACCESS_FINE_LOCATION अनुमति का एलान करने की ज़रूरत नहीं है:
दूसरी इमेज में, 12L या इससे पहले के वर्शन वाले डिवाइसों पर वाई-फ़ाई ऐक्सेस करने का वर्कफ़्लो दिखाया गया है. ध्यान दें कि यह सुविधा, ACCESS_FINE_LOCATION अनुमति पर निर्भर करती है.