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