على التطبيقات التي تستهدف الإصدار 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 التالية:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
مهام سير عمل الوصول إلى شبكة Wi-Fi
يوضّح الشكل 1 سير عمل الوصول إلى شبكة Wi-Fi على الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، وذلك في التطبيقات التي تستهدف الإصدار
13 من نظام التشغيل Android أو الإصدارات الأحدث. يُرجى العلم أنّه ما دمت تؤكد أنّ تطبيقك لا يستخرج الموقع الجغرافي الفعلي من معلومات جهاز Wi-Fi، لن يكون عليك تقديم بيان عن إذن ACCESS_FINE_LOCATION
بعد الآن:
يوضح الشكل 2 سير عمل الوصول إلى Wi-Fi على الأجهزة التي تعمل
12 لتر أو أقل. يجب الانتباه إلى مدى الاعتماد على
إذن "ACCESS_FINE_LOCATION
".