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