يجب أن تطلب التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android (المستوى 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 على الأجهزة التي تعمل بنظام التشغيل Android 12L أو إصدار أقدم. يُرجى العِلم أنّ هذا الإجراء يعتمد على إذن
ACCESS_FINE_LOCATION
.