Android 6 ve sonraki sürümlerde, Wi-Fi servis sağlayıcıları ve paket analizörlerinin, ağ isteklerinden Wi-Fi yığını aracılığıyla bir cihazın fabrika MAC adresini alması kısıtlanmıştır. Android 10'dan başlayarak, cihaz tanımlayıcılarına (ID'ler) erişimi ayrıcalıklı izin düzeyine sahip uygulamalarla sınırlayan ek kısıtlamalar uygulamaya konmuştur. Bu, aşağıdaki gibi cihaz kimliklerini korur:
- telefon IMEI, MEID, ESN ve IMSI numaraları.
- derleme, SIM veya USB seri numaraları.
Cihaz kimliklerine kimler erişebilir?
Uygulamalar Android 9 veya daha eski sürümleri hedeflese bile cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanmıştır. Cihaz kimliklerine şuradan erişilebilir:
- Varsayılan SMS uygulaması.
- Hem
Manifest.permission
sınıfındaREAD_PRIVILEGED_PHONE_STATE
iznine sahip, hem deprivapp-permission.xml
dosyasında izin verilenler listesine eklenmiş uygulamalar. Bunların ayrıcapriv-app
dizinine de yüklenmesi gerekir. - UICC Operatör Ayrıcalıkları'nda tanımlandığı gibi operatör ayrıcalıklarına sahip uygulamalar.
-
Manifest.permission
sınıfında verilenREAD_PHONE_STATE
iznine sahip bir cihaz sahibi veya profil sahibi. (İzin verilenler listesine eklenmesi gerekli değildir.)
Ayrıcalıklı paket erişimi
Cihaz kimliklerine erişmek için bir paketin ayrıcalıklı olması gerekir. Manifest.permission
sınıfında READ_PRIVILEGED_PHONE_STATE
iznine sahip olması ve privapp-permission.xml
dosyasında izin verilenler listesine eklenmiş olması gerekir. İzin verilenler listesi süreci hakkında bilgi için Ayrıcalıklı İzin İzin Verilenler Listesine Ekleme konusuna bakın.
Ayrıcalıklı olmayan bir paket için benzersiz bir kimlik alma konusunda bilgi edinmek için Yaygın kullanım örneklerine ve kullanılacak uygun tanımlayıcıya bakın.
Kısıtlanmış cihaz kimlikleri ve rastgele MAC adresleri
Cihaz kimliklerini daha da kısıtlamak için Android 10'daki tüm cihazlar, hem araştırma hem de ilgili istekler için varsayılan olarak rastgele MAC adresleri iletir ve her SSID için farklı bir rastgele MAC adresine sahip olmaları gerekir. İstemci modunda, yazılım erişim noktasında (AP) veya Wi-Fi Direct kullanım durumlarında cihazın fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulamalar olmayan, herkesin erişebildiği API'lerden gizli kalmalıdır. Fabrika MAC adresinin döndürülmesini gerektiren ayrıcalıklı uygulamaların LOCAL_MAC_ADDRESS
iznine sahip olması gerekir.
Kullanıcılar, her SSID'ye atanan varsayılan rastgele MAC adresini koruma seçeneğine sahiptir. Bu seçenek, Ayarlar > Ağ ayrıntıları bölümündeki Gizlilik altında görüntülenebilir. Rastgele bir MAC adresi elde etme hakkında bilgi edinmek için bkz. Rastgele MAC adresleri .
Cihaz kimliği API'lerini çağıran uygulamalar
Cihaz kimliği API'lerini çağıran uygulamaların Android 10 gereksinimlerini karşılaması gerekir. Aksi takdirde, cihaz kimliklerine erişmeye çalıştıklarında aşağıdakiler döndürülür:
- Android 10'u hedefleyen uygulamalar
- Cihaz kimliği API'lerinden bir
SecurityException
oluşturulur. - Android 9 veya önceki sürümleri hedefleyen uygulamalar
-
READ_PHONE_STATE
iznine sahiplersenull
bir yanıt veya yer tutucu verileri döndürülür. - Bunu yapmazlarsa cihaz kimliği API'leri, çağrılan yöntemin adını ve çağıran uygulamanın istenen kimliğe erişim gereksinimlerini karşılamadığına dair bir göstergeyi içeren bir
SecurityException
oluşturur.
Değiştirilemez cihaz kimlikleri hakkında daha fazla bilgi için Sıfırlanamayan cihaz tanımlayıcıları ve benzersiz tanımlayıcılara yönelik en iyi uygulamalara bakın.
Test yapmak
Uygulamaların cihazın seri numarasına ve uygun olduğu durumlarda IMEI/MEID'ye, SIM seri numarasına ve abone kimliğine erişmesi engellenmelidir . Bu kimliklere erişim iznine sahip uygulamaların , Cihaz kimliklerine kimler erişebilir bölümünde listelenen ölçütlerden birini de karşılaması gerekir.