طلب الحصول على إذن للوصول إلى أجهزة 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" لا يتوفّر إلّا على الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث، يجب الاحتفاظ بأي بيانات تعريفية بالتوافق مع واجهة برمجة التطبيقات 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. رسم بياني انسيابي لتحديد ما إذا كان يمكن للتطبيق الذي يستهدف Android 13 (المستوى 33 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث الوصول إلى معلومات شبكة Wi-Fi.

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

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