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

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

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

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

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

عند استهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، يجب مراعاة ما إذا كان تطبيقك يستخرج معلومات الموقع الجغرافي من واجهات برمجة تطبيقات 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، حتى إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو إصدارًا أحدث. تشمل الأمثلة يلي الطرق من فئة 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>

البحث عن واجهات برمجة التطبيقات التي تتطلّب الحصول على الإذن

إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، يجب الإفصاح عن إذن NEARBY_WIFI_DEVICES للاتصال بأي من واجهات برمجة تطبيقات Wi-Fi التالية:

مسارات العمل للوصول إلى شبكة Wi-Fi

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

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

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

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