Update alamat MAC di Android 11

Android 11 memperkenalkan perubahan berikut yang terkait dengan alamat MAC. Perubahan ini hanya memengaruhi aplikasi jika menargetkan Android 11.

Pengacakan MAC

Pada aplikasi yang menargetkan Android 10 (API level 29) dan yang lebih rendah, pengacakan MAC dilakukan per SSID, karena Passpoint dapat terhubung ke SSID yang berbeda untuk profil yang sama. Pada aplikasi yang menargetkan Android 11 (API level 30) dan yang lebih tinggi, pengacakan MAC untuk jaringan Passpoint diubah menjadi per nama domain yang sepenuhnya memenuhi syarat (FQDN).

Pada aplikasi yang menargetkan API level 30 dan yang lebih tinggi, aplikasi tanpa hak istimewa tidak akan dapat mengakses alamat MAC perangkat; hanya antarmuka jaringan dengan alamat IP yang akan terlihat. Hal ini memengaruhi metode getifaddrs() dan NetworkInterface.getHardwareAddress(), serta pengiriman pesan netlink RTM_GETLINK.

Berikut adalah daftar tentang bagaimana aplikasi terpengaruh oleh perubahan ini:

  • NetworkInterface.getHardwareAddress() menampilkan null untuk setiap antarmuka.
  • Aplikasi tidak dapat menggunakan fungsi bind() pada soket NETLINK_ROUTE.
  • Perintah ip tidak menampilkan informasi tentang antarmuka.

Perubahan ini menerapkan panduan yang disediakan di Jangan menangani alamat MAC.

Perlu diperhatikan bahwa sebagian besar developer harus menggunakan API level ConnectivityManager yang lebih tinggi, bukan API level yang lebih rendah seperti NetworkInterface dan getifaddrs().