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

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

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

يُعد إذن NEARBY_WIFI_DEVICES جزءًا من مجموعة أذونات الأجهزة المجاورة. وقد تمت إضافة هذه المجموعة في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات)، وتتضمّن أيضًا أذونات تتعلّق بالبلوتوث والنطاق الفائق العرض. عندما تطلب أي مجموعة من الأذونات من مجموعة الأذونات هذه، يعرض النظام مربّع حوار واحدًا في وقت التشغيل ويطلب من المستخدم الموافقة على وصول تطبيقك إلى الأجهزة المجاورة. في إعدادات النظام، يجب على المستخدم تفعيل أذونات الأجهزة المجاورة أو إيقافها كمجموعة. على سبيل المثال، لا يمكن للمستخدمين إيقاف الوصول إلى 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 على الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، وذلك في التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث. يُرجى العلم أنّه ما دمت تؤكد أنّ تطبيقك لا يستخرج الموقع الجغرافي الفعلي من معلومات جهاز Wi-Fi، لن يكون عليك تقديم بيان عن إذن ACCESS_FINE_LOCATION بعد الآن:

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

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

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