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

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

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

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