طلب الحصول على إذن للوصول إلى أجهزة Wi-Fi المجاورة

يجب أن تطلب التطبيقات التي تستهدف Android 13 (مستوى واجهة برمجة التطبيقات 33) أو الإصدارات الأحدث وتدير اتصالات Wi-Fi إذن NEARBY_WIFI_DEVICES إذن التشغيل. يسهّل هذا الإذن تبرير وصول التطبيق إلى أجهزة Wi-Fi المجاورة. في الإصدارات السابقة من Android، كانت هذه التطبيقات بحاجة إلى الإعلان عن ACCESS_FINE_LOCATION إذن بدلاً من ذلك.

SecurityException

الإذن جزء من مجموعة الأجهزة المجاورة

إنّ إذن NEARBY_WIFI_DEVICES جزء من مجموعة أذونات الأجهزة المجاورة. تتضمّن هذه المجموعة، التي تمت إضافتها في Android 12 (مستوى واجهة برمجة التطبيقات 31)، أيضًا أذونات ذات صلة بالبلوتوث والنطاق فائق العرض. عند طلب أي مجموعة من الأذونات من مجموعة الأذونات هذه، يعرض النظام مربّع حوار واحدًا لوقت التشغيل ويطلب من المستخدم الموافقة على وصول تطبيقك إلى الأجهزة المجاورة. في إعدادات النظام، يجب أن يفعِّل المستخدم أذونات الأجهزة المجاورة ويوقفها كمجموعة. على سبيل المثال، لا يمكن للمستخدمين إيقاف الوصول إلى Wi-Fi مع إبقاء الوصول إلى البلوتوث مفعّلاً لتطبيق معيّن.

التأكيد بشدة على أنّ تطبيقك لا يستمد الموقع الجغرافي الفعلي

عند استهداف Android 13 أو إصدار أحدث، عليك تحديد ما إذا كان تطبيقك يستمد معلومات الموقع الجغرافي من واجهات برمجة تطبيقات Wi-Fi. إذا لم يكن الأمر كذلك، عليك التأكيد بشدة على ذلك. للتأكيد على ذلك، اضبط السمة usesPermissionFlags على neverForLocation في ملف بيان تطبيقك، كما هو موضّح في مقتطف الرمز التالي. تشبه هذه العملية العملية التي تجريها عندما ت ؤكد أنّه لا يتم استخدام معلومات جهاز البلوتوث مطلقًا لتحديد الموقع الجغرافي:

<manifest ...>
    <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                     android:usesPermissionFlags="neverForLocation" />
    <application ...>
        ...
    </application>
</manifest>

تتطلب الإصدارات السابقة وبعض واجهات برمجة التطبيقات إذن تحديد الموقع الجغرافي

تتطلب العديد من واجهات برمجة تطبيقات Wi-Fi إذن 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 لاستدعاء أي من واجهات برمجة تطبيقات Wi-Fi التالية:

سير عمل الوصول إلى Wi-Fi

يوضّح الشكل 1 سير عمل الوصول إلى Wi-Fi على الأجهزة التي تعمل بنظام التشغيل Android 13 أو إصدار أحدث، للتطبيقات التي تستهدف Android 13 أو إصدارًا أحدث. يُرجى العِلم أنّه طالما أنّك تؤكد أنّ تطبيقك لا يستمد الموقع الجغرافي الفعلي من معلومات جهاز Wi-Fi، لن تحتاج بعد الآن إلى الإعلان عن إذن ACCESS_FINE_LOCATION:

الشكل 1. مخطط انسيابي لتحديد ما إذا كان بإمكان تطبيق يستهدف Android 13 (المستوى 33 لواجهة برمجة التطبيقات) أو إصدارًا أحدث الوصول إلى معلومات Wi-Fi.

يوضّح الشكل 2 سير عمل الوصول إلى Wi-Fi على الأجهزة التي تعمل بنظام التشغيل 12L أو إصدار أقدم. يُرجى العِلم بالاعتماد على إذن ACCESS_FINE_LOCATION.

الشكل 2. مخطط انسيابي لتحديد ما إذا كان بإمكان تطبيق يستهدف 12L (المستوى 32 لواجهة برمجة التطبيقات) أو إصدارًا أقدم الوصول إلى معلومات Wi-Fi.