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