Seperti rilis sebelumnya, Android 13 menyertakan perubahan perilaku yang dapat memengaruhi aplikasi Anda. Perubahan perilaku berikut ini berlaku khusus bagi aplikasi yang menargetkan Android 13 atau yang lebih tinggi. Jika aplikasi menargetkan Android 13 atau yang lebih tinggi, Anda harus memodifikasi aplikasi untuk mendukung perilaku ini dengan benar, jika berlaku.
Pastikan Anda meninjau daftar perubahan perilaku yang memengaruhi semua aplikasi yang berjalan di Android 13.
Privasi
Izin notifikasi memengaruhi tampilan layanan latar depan
Jika pengguna menolak izin notifikasi, mereka tetap melihat notifikasi yang terkait dengan layanan latar depan ini di Pengelola Tugas Layanan Latar Depan (FGS) tetapi tidak melihatnya di panel samping notifikasi.
Izin runtime baru untuk perangkat Wi-Fi di sekitar
Pada versi Android sebelumnya, pengguna perlu memberikan izin
ACCESS_FINE_LOCATION
untuk menyelesaikan beberapa kasus penggunaan Wi-Fi umum yang terkait dengan
hotspot, Sambungan Wi-Fi Langsung, Wi-Fi RTT, dan banyak lagi.
Karena sulit bagi pengguna untuk mengaitkan izin akses lokasi dengan fungsi
Wi-Fi, Android 13 memperkenalkan izin runtime baru dalam
grup izin
NEARBY_DEVICES
untuk aplikasi yang mengelola koneksi perangkat ke titik
akses di sekitar melalui Wi-Fi. Izin ini,
NEARBY_WIFI_DEVICES
,
memenuhi kasus penggunaan Wi-Fi ini.
Selama aplikasi Anda tidak memperoleh informasi lokasi fisik dari API
Wi-Fi, mintalah NEARBY_WIFI_DEVICES
, bukan ACCESS_FINE_LOCATION
saat Anda
menargetkan Android 13 atau yang lebih tinggi dan gunakan API Wi-Fi. Proses ini
serupa dengan yang Anda lakukan di Android 12 (API level 31) dan yang lebih tinggi saat Anda
menegaskan bahwa informasi perangkat Bluetooth tidak pernah digunakan untuk
lokasi.
Pelajari lebih lanjut tentang izin perangkat Wi-Fi di sekitar.
Penggunaan sensor tubuh di latar belakang memerlukan izin baru
Android 13 memperkenalkan konsep akses "saat digunakan" untuk sensor tubuh, seperti detak jantung, suhu, dan persentase oksigen darah. Model akses ini sangat mirip dengan yang diperkenalkan oleh sistem untuk lokasi di Android 10 (API level 29).
Jika aplikasi Anda menargetkan Android 13 dan memerlukan akses ke informasi
sensor tubuh saat berjalan di latar belakang, Anda harus mendeklarasikan izin
BODY_SENSORS_BACKGROUND
yang baru selain izin
BODY_SENSORS
yang ada.
Keamanan
Filter intent memblokir intent yang tidak cocok
Saat aplikasi Anda mengirimkan intent ke komponen aplikasi lain yang
ditargetkan di Android 13 atau yang lebih tinggi, intent tersebut akan dikirim jika dan
hanya jika cocok dengan elemen <intent-filter>
di aplikasi penerima. Dengan kata
lain, sistem akan memblokir semua intent yang tidak cocok, kecuali untuk hal berikut:
- Intent yang dikirim ke komponen aplikasi lain saat komponen tersebut tidak mendeklarasikan filter intent apa pun.
- Intent yang dikirim ke komponen lain dalam aplikasi Anda.
- Intent yang dikirim dari sistem.
- Intent yang dikirim dari pengguna dengan hak istimewa tingkat root.
Mengekspor penerima yang terdaftar dalam konteks dengan lebih aman
Untuk membantu membuat penerima runtime lebih aman, Android 13 memungkinkan Anda untuk menentukan apakah penerima siaran tertentu di aplikasi Anda harus diekspor dan terlihat oleh aplikasi lain di perangkat. Jika penerima siaran diekspor, aplikasi lain dapat mengirim siaran yang tidak dilindungi ke aplikasi Anda. Konfigurasi ekspor ini, yang tersedia di aplikasi yang menargetkan Android 13 atau yang lebih tinggi, dapat membantu mencegah timbulnya salah satu sumber utama kerentanan aplikasi.
Pada versi Android sebelumnya, aplikasi apa pun di perangkat dapat mengirim siaran yang tidak dilindungi ke penerima yang terdaftar secara dinamis, kecuali penerima tersebut dilindungi dengan izin tanda tangan.
Untuk menerapkan langkah peningkatan keamanan ini, lakukan langkah berikut:
- Aktifkan
perubahan
framework kompatibilitas
DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED
. Di setiap penerima siaran aplikasi Anda, tunjukkan secara eksplisit apakah aplikasi lain dapat mengirim siaran ke aplikasi tersebut, seperti yang ditampilkan dalam cuplikan kode berikut:
Kotlin
// This broadcast receiver should be able to receive broadcasts from other apps. // This option causes the same behavior as setting the broadcast receiver's // "exported" attribute to true in your app's manifest. context.registerReceiver(sharedBroadcastReceiver, intentFilter, RECEIVER_EXPORTED) // For app safety reasons, this private broadcast receiver should **NOT** // be able to receive broadcasts from other apps. context.registerReceiver(privateBroadcastReceiver, intentFilter, RECEIVER_NOT_EXPORTED)
Java
// This broadcast receiver should be able to receive broadcasts from other apps. // This option causes the same behavior as setting the broadcast receiver's // "exported" attribute to true in your app's manifest. context.registerReceiver(sharedBroadcastReceiver, intentFilter, RECEIVER_EXPORTED); // For app safety reasons, this private broadcast receiver should **NOT** // be able to receive broadcasts from other apps. context.registerReceiver(privateBroadcastReceiver, intentFilter, RECEIVER_NOT_EXPORTED);
Performa dan baterai
Pemakaian Resource Baterai
Jika pengguna menempatkan aplikasi Anda dalam status "dibatasi" untuk penggunaan baterai di latar belakang sementara aplikasi Anda menargetkan Android 13, sistem akan menerapkan beberapa batasan terkait siaran.
Pelajari batasan baru untuk penggunaan baterai di latar belakang yang dibatasi lebih lanjut di halaman yang menjelaskan fitur Pemakaian Resource Baterai yang diperkenalkan di Android 13.