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

التحقّق من واجهات برمجة التطبيقات التي تتطلّب إذنًا

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

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

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