Di Android 6 dan yang lebih tinggi, penyedia layanan Wi-Fi dan penganalisis paket telah dibatasi agar tidak mengambil alamat MAC pabrik perangkat melalui stack Wi-Fi dari permintaan jaringan. Mulai Android 10, pembatasan tambahan diterapkan yang membatasi akses ke ID perangkat (ID) ke aplikasi dengan level izin hak istimewa. Hal ini melindungi ID perangkat seperti
- nomor IMEI, MEID, ESN, dan IMSI telepon.
- build, SIM, atau nomor seri USB.
Siapa yang dapat mengakses ID perangkat
ID Perangkat dibatasi di semua perangkat Android 10, meskipun aplikasi menargetkan Android 9 atau yang lebih lama. ID perangkat dapat diakses oleh:
- Aplikasi SMS default.
- Aplikasi dengan izin
READ_PRIVILEGED_PHONE_STATE
di classManifest.permission
, dan daftar yang diizinkan di fileprivapp-permission.xml
. File ini juga harus dimuat di direktoripriv-app
. - Aplikasi dengan hak istimewa operator seperti yang ditentukan dalam Hak Istimewa Operator UICC.
- Pemilik perangkat atau pemilik profil dengan izin
READ_PHONE_STATE
yang diberikan di classManifest.permission
. (Daftar yang diizinkan tidak diperlukan.)
Akses paket dengan hak istimewa
Paket harus memiliki hak istimewa untuk mengakses ID perangkat. Aplikasi tersebut harus memiliki
izin
READ_PRIVILEGED_PHONE_STATE
di
class Manifest.permission
, dan diizinkan dalam
file privapp-permission.xml
. Untuk informasi tentang proses daftar yang diizinkan, lihat Daftar Izin
Berhak Istimewa yang Diizinkan.
Untuk informasi tentang cara mendapatkan ID unik untuk paket tanpa hak istimewa, lihat Kasus penggunaan umum dan ID yang sesuai untuk digunakan.
ID perangkat yang dibatasi dan alamat MAC acak
Untuk lebih membatasi ID perangkat, semua perangkat di Android 10 mentransmisikan alamat MAC acak secara default untuk
permintaan probe dan terkait, dan harus memiliki alamat MAC acak yang berbeda
untuk setiap SSID. Jangan gunakan alamat MAC pabrik perangkat dalam mode klien, titik akses (AP)
lunak, atau kasus penggunaan Wi-Fi Direct. Aplikasi ini harus tetap disembunyikan dari
API yang dapat diakses secara publik dan bukan aplikasi dengan hak istimewa. Aplikasi dengan hak istimewa yang
memerlukan alamat MAC pabrik untuk ditampilkan harus memiliki
izin LOCAL_MAC_ADDRESS
.
Pengguna memiliki opsi untuk mempertahankan alamat MAC acak default yang ditetapkan ke setiap SSID. Opsi ini dapat dilihat di bagian Privasi di Setelan > Detail jaringan. Untuk mempelajari cara mendapatkan alamat MAC acak, lihat Alamat MAC acak.

Gambar 1. Alamat MAC ditampilkan sebagai acak di bagian Privasi dalam detail Jaringan.
Aplikasi yang memanggil API ID perangkat
Aplikasi yang memanggil API ID perangkat harus memenuhi persyaratan Android 10. Jika tidak, saat mencoba mengakses ID perangkat, hal berikut akan ditampilkan:
- Aplikasi yang menargetkan Android 10
SecurityException
ditampilkan dari API ID perangkat.- Aplikasi yang menargetkan Android 9 atau yang lebih lama
- Jika memiliki izin
READ_PHONE_STATE
, responsnull
atau data placeholder akan ditampilkan. - Jika tidak, API ID perangkat akan menampilkan
SecurityException
yang berisi nama metode yang dipanggil, dan indikasi bahwa aplikasi pemanggil tidak memenuhi persyaratan untuk mengakses ID yang diminta.
Untuk mengetahui informasi selengkapnya tentang ID perangkat yang tidak dapat diubah, lihat ID perangkat yang tidak dapat direset dan praktik terbaik untuk ID unik.
Pengujian
Aplikasi harus dicegah agar tidak mengakses nomor seri perangkat dan, jika berlaku, IMEI atau MEID, nomor seri SIM, dan ID pelanggan. Aplikasi dengan izin untuk mengakses ID ini juga harus memenuhi salah satu kriteria yang tercantum di bagian Siapa yang dapat mengakses ID perangkat.