Selamat datang di Pratinjau Developer Android 13. Beri kami masukan, dan bantu kami menjadikan Android 13 sebagai rilis terbaik.

Perubahan perilaku: Aplikasi yang menargetkan Android 13 atau yang lebih tinggi

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:

  1. Aktifkan perubahan framework kompatibilitas DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED.
  2. 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.