في نظام التشغيل Android 6 والإصدارات الأحدث، تم منع موفري خدمة Wi-Fi ومحللي الحزم من استرداد عنوان MAC الخاص بالمصنع للجهاز من خلال حزمة Wi-Fi من طلبات الشبكة. بدءًا من Android 10، تم وضع قيود إضافية تحد من الوصول إلى معرفات الأجهزة (IDs) للتطبيقات ذات مستوى الأذونات المميزة . وهذا يحمي معرفات الجهاز مثل
- أرقام IMEI وMEID وESN وIMSI الخاصة بالهاتف.
- أرقام البناء أو SIM أو USB التسلسلية.
من يمكنه الوصول إلى معرفات الجهاز
يتم تقييد معرفات الأجهزة على جميع الأجهزة التي تعمل بنظام Android 10، حتى إذا كانت التطبيقات تستهدف Android 9 أو أقل. يمكن الوصول إلى معرفات الأجهزة عن طريق
- تطبيق الرسائل القصيرة الافتراضي.
- التطبيقات التي تتمتع بإذن
READ_PRIVILEGED_PHONE_STATE
في فئةManifest.permission
والقائمة المسموح بها في ملفprivapp-permission.xml
. ويجب أيضًا تحميلها في دليلpriv-app
. - التطبيقات التي تتمتع بامتيازات مشغل شبكة الجوال كما هو محدد في امتيازات مشغل شبكة الجوال UICC .
- مالك الجهاز أو مالك الملف الشخصي الحاصل على إذن
READ_PHONE_STATE
الممنوح في فئةManifest.permission
. (القائمة المسموح بها غير مطلوبة.)
الوصول إلى الحزم المميزة
يجب أن تتمتع الحزمة بامتياز للوصول إلى معرفات الجهاز. يجب أن يكون لديه إذن READ_PRIVILEGED_PHONE_STATE
في فئة Manifest.permission
، وأن يتم إدراجه في القائمة المسموح بها في ملف privapp-permission.xml
. للحصول على معلومات حول عملية القائمة المسموح بها، راجع القائمة المسموح بها للأذونات المميزة .
للحصول على معلومات حول الحصول على معرف فريد لحزمة غير مميزة ، راجع حالات الاستخدام الشائع والمعرف المناسب للاستخدام .
معرفات الأجهزة المقيدة وعناوين MAC العشوائية
لتقييد معرفات الأجهزة بشكل أكبر، تقوم جميع الأجهزة التي تعمل بنظام Android 10 بنقل عناوين MAC العشوائية افتراضيًا لكل من التحقيق والطلبات المرتبطة بها، ويجب أن يكون لها عنوان MAC عشوائي مختلف لكل SSID. لا تستخدم عنوان MAC الخاص بمصنع الجهاز في وضع العميل أو نقطة الوصول الناعمة (AP) أو حالات استخدام Wi-Fi Direct. ويجب أن تظل مخفية عن واجهات برمجة التطبيقات (APIs) التي يمكن الوصول إليها بشكل عام والتي ليست تطبيقات مميزة. يجب أن تحصل التطبيقات المميزة التي تتطلب إعادة عنوان MAC الخاص بالمصنع على إذن LOCAL_MAC_ADDRESS
.
يتوفر للمستخدمين خيار الاحتفاظ بعنوان MAC العشوائي الافتراضي المخصص لكل SSID. يمكن عرض الخيار ضمن الخصوصية في الإعدادات > تفاصيل الشبكة . للتعرف على كيفية الحصول على عنوان MAC عشوائي، راجع عناوين MAC العشوائية .
التطبيقات التي تستدعي واجهات برمجة تطبيقات معرف الجهاز
يجب أن تستوفي التطبيقات التي تستدعي واجهات برمجة تطبيقات معرف الجهاز متطلبات Android 10. بخلاف ذلك، عندما يحاولون الوصول إلى معرفات الأجهزة، يتم إرجاع ما يلي:
- التطبيقات التي تستهدف Android 10
- يتم طرح
SecurityException
من واجهات برمجة تطبيقات معرف الجهاز. - التطبيقات التي تستهدف Android 9 أو الإصدارات الأقدم
- إذا كان لديهم إذن
READ_PHONE_STATE
، فسيتم إرجاع استجابةnull
أو بيانات العنصر النائب. - إذا لم يحدث ذلك، فإن واجهات برمجة تطبيقات معرف الجهاز تطلق
SecurityException
الذي يحتوي على اسم الطريقة التي يتم استدعاؤها، وإشارة إلى أن تطبيق الاتصال لا يلبي متطلبات الوصول إلى المعرف المطلوب.
لمعرفة المزيد حول معرفات الأجهزة غير القابلة للتغيير، راجع معرفات الأجهزة غير القابلة لإعادة التعيين وأفضل الممارسات للمعرفات الفريدة .
اختبارات
يجب منع التطبيقات من الوصول إلى الرقم التسلسلي للجهاز، وحيثما أمكن، IMEI / MEID، والرقم التسلسلي لبطاقة SIM، ومعرف المشترك. يجب أيضًا أن تستوفي التطبيقات التي لديها إذن للوصول إلى هذه المعرفات أحد المعايير المدرجة ضمن من يمكنه الوصول إلى معرفات الأجهزة .