Android 6 ve sonraki sürümlerde, Wi-Fi hizmet sağlayıcıları ve paket analizörleri, ağ isteklerinden Wi-Fi yığını aracılığıyla bir cihazın fabrika MAC adresini almaktan kısıtlanmıştır. Android 10'dan itibaren, ayrıcalıklı izin düzeyine sahip uygulamalara cihaz tanımlayıcılarına (ID'ler) erişimi sınırlayan ek kısıtlamalar uygulanmaktadır. Bu, aşağıdakiler gibi cihaz kimliklerini korur:
- telefon IMEI, MEID, ESN ve IMSI numaraları.
- yapı, SIM veya USB seri numaraları.
Cihaz kimliklerine kimler erişebilir?
Uygulamalar Android 9 veya önceki sürümleri hedeflese bile, cihaz kimlikleri tüm Android 10 cihazlarda kısıtlanır. Cihaz kimliklerine şuradan erişilebilir:
- Varsayılan SMS uygulaması.
-
Manifest.permission
sınıfında hemREAD_PRIVILEGED_PHONE_STATE
iznine hem deprivapp-permission.xml
dosyasında izin verilenler listesine sahip uygulamalar. Bunlar ayrıcapriv-app
dizinine yüklenmelidir. - UICC Taşıyıcı Ayrıcalıklarında tanımlandığı şekilde 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 listesi 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 olmalı ve privapp-permission.xml
dosyasında izin verilenler listesine eklenmelidir. İzin verilenler listesi süreci hakkında bilgi için bkz. Ayrıcalıklı İzin İzin Verilenler Listesi .
Ayrıcalıklı olmayan bir paket için benzersiz bir kimlik alma hakkında bilgi için, Ortak 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 fazla kısıtlamak için Android 10'daki tüm cihazlar, hem araştırma hem de ilişkili istekler için varsayılan olarak rastgele MAC adresleri iletir ve her SSID için farklı bir rastgele MAC adresine sahip olmalıdır. İstemci modunda, yumuşak erişim noktasında (AP) veya Wi-Fi Direct kullanım durumlarında cihaz fabrika MAC adresini kullanmayın. Ayrıcalıklı uygulamalar olmayan, genel olarak erişilebilir 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. Seçenek, Ayarlar > Ağ ayrıntıları bölümünde Gizlilik altında görüntülenebilir. Rastgele bir MAC adresi alma 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, Android 10 gereksinimlerini karşılamalıdır. Aksi takdirde, cihaz kimliklerine erişmeye çalıştıklarında aşağıdakiler döndürülür:
- Android 10'u hedefleyen uygulamalar
- Aygıt kimliği API'lerinden bir
SecurityException
oluşturulur. - Android 9 veya önceki sürümleri hedefleyen uygulamalar
-
READ_PHONE_STATE
iznine sahiplerse,null
bir yanıt veya yer tutucu verileri döndürülür. - Aksi takdirde, cihaz kimliği API'leri, çağrılan yöntemin adını ve çağıran uygulamanın istenen kimliğe erişme gereksinimlerini karşılamadığını gösteren 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ılar için en iyi uygulamalar bölümüne bakın.
Test yapmak
Uygulamaların cihaz seri numarasına ve varsa 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 altında listelenen kriterlerden birini de karşılaması gerekir.