Perubahan perilaku: semua aplikasi

Platform Android 13 menyertakan perubahan perilaku yang dapat memengaruhi aplikasi Anda. Perubahan perilaku berikut ini berlaku untuk semua aplikasi saat dijalankan di Android 13, terlepas dari targetSdkVersion. Sebaiknya uji aplikasi Anda, lalu modifikasi sesuai kebutuhan untuk mendukung perubahan ini dengan tepat, jika memungkinkan.

Selain itu, pastikan Anda meninjau daftar perubahan perilaku yang hanya memengaruhi aplikasi yang menargetkan Android 13.

Performa dan baterai

Pengelola Tugas Layanan Latar Depan (FGS)

Di bagian bawah panel samping notifikasi terdapat tombol yang menunjukkan
  jumlah aplikasi yang sedang berjalan di latar belakang. Saat Anda menekan
  tombol ini, akan muncul dialog yang mencantumkan nama berbagai aplikasi. Tombol
  Berhenti berada di sebelah kanan setiap aplikasi
Gambar 1. Alur kerja Pengelola Tugas FGS di perangkat Android 13.

Android 13 (API level 33) memungkinkan pengguna menghentikan layanan latar depan dari panel samping notifikasi, apa pun versi SDK target. Kemampuan baru ini, yang disebut Pengelola Tugas FGS, menampilkan daftar aplikasi yang saat ini menjalankan layanan latar depan. Daftar ini diberi label Aplikasi aktif. Di samping setiap aplikasi terdapat tombol Berhenti. Gambar 1 mengilustrasikan alur kerja Pengelola Tugas FGS pada perangkat yang menjalankan Android 13.

Pelajari Pengelola Tugas FGS lebih lanjut.

Meningkatkan penanganan tugas pengambilan data menggunakan JobScheduler

JobScheduler menyediakan cara bagi aplikasi untuk menandai tugas tertentu sebagai tugas pengambilan data (menggunakan JobInfo.Builder.setPrefetch()), yang berarti aplikasi tersebut idealnya harus dijalankan mendekati, dan sebelum, peluncuran aplikasi berikutnya untuk meningkatkan pengalaman pengguna. Secara historis, JobScheduler hanya menggunakan sinyal untuk memungkinkan tugas pengambilan data secara oportunistik menggunakan data gratis atau berlebih.

Di Android 13, sistem kini mencoba menentukan kapan selanjutnya aplikasi akan diluncurkan, dan menggunakan estimasi tersebut untuk menjalankan tugas pengambilan data. Aplikasi harus mencoba menggunakan tugas pengambilan data untuk pekerjaan apa pun yang ingin dilakukannya sebelum peluncuran aplikasi berikutnya.

Pemakaian Resource Baterai

Android 13 (API level 33) memperkenalkan Pemakaian Resource Baterai, yang menyediakan beberapa cara agar sistem dapat mengelola masa pakai baterai perangkat dengan lebih baik:

Kuota Firebase Cloud Message (FCM) Prioritas Tinggi

Android 13 (API level 33) memperbarui kuota Firebase Cloud Messaging (FCM) untuk meningkatkan keandalan pengiriman FCM prioritas tinggi bagi aplikasi yang menampilkan notifikasi sebagai respons terhadap FCM prioritas tinggi. Hal berikut telah berubah di Android 13 (API level 33):

  • Bucket Aplikasi Standby tidak lagi menentukan berapa banyak FCM prioritas tinggi yang dapat digunakan aplikasi.
  • Skala kuota FCM prioritas tinggi sebanding dengan jumlah notifikasi yang ditampilkan kepada pengguna sebagai respons terhadap FCM Prioritas Tinggi.

Seperti pada versi Android sebelumnya, FCM prioritas tinggi yang melebihi kuota akan didowngrade ke prioritas normal. Saat memulai Layanan Latar Depan (FGS) sebagai respons terhadap FCM, sebaiknya Anda memeriksa hasil RemoteMessage.getPriority() dan memastikannya PRIORITY_HIGH dan/atau menangani setiap potensi pengecualian ForegroundServiceStartNotAllowedException.

Jika aplikasi Anda tidak selalu memposting notifikasi sebagai respons atas FCM Prioritas Tinggi, sebaiknya ubah prioritas FCM ini ke normal sehingga pesan yang menghasilkan notifikasi tidak didowngrade.

Privasi

Izin runtime untuk notifikasi

Android 13 (API level 33) memperkenalkan izin notifikasi runtime baru: POST_NOTIFICATIONS. Perubahan ini membantu pengguna untuk berfokus pada notifikasi yang paling penting bagi mereka.

Sebaiknya Anda menargetkan Android 13 sesegera mungkin untuk mendapatkan efek kontrol dan fleksibilitas tambahan dari fitur ini.

Pelajari praktik terbaik izin aplikasi lebih lanjut.

Menyembunyikan konten sensitif dari papan klip

Jika aplikasi Anda mengizinkan pengguna untuk menyalin konten sensitif, seperti sandi atau informasi kartu kredit, Anda harus menambahkan flag ke ClipDescription ClipData di papan klip sebelum memanggil ClipboardManager#setPrimaryClip(). Menambahkan flag ini akan mencegah konten sensitif muncul dalam pratinjau konten.

Pratinjau teks yang disalin tanpa menambahkan flag pada konten sensitif
Pratinjau teks yang disalin tanpa menambahkan flag pada konten sensitif.
Pratinjau teks yang disalin dengan menambahkan flag pada konten sensitif.
Pratinjau teks yang disalin dengan menambahkan flag pada konten sensitif.

Untuk menambahkan flag pada konten sensitif, sertakan tambahan boolean ke ClipDescription. Semua aplikasi harus melakukan ini, apa pun API level yang ditargetkan.


// When your app targets API level 33 or higher
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true)
    }
}

// If your app targets a lower API level
clipData.apply {
    description.extras = PersistableBundle().apply {
        putBoolean("android.content.extra.IS_SENSITIVE", true)
    }
}

Untuk mempelajari UI papan klip baru lebih lanjut, kunjungi halaman fitur Salin dan tempel.

Keamanan

Bermigrasi dari ID pengguna bersama

Jika aplikasi Anda menggunakan atribut android:sharedUserId yang tidak digunakan lagi dan tidak lagi bergantung pada fungsi atribut, Anda dapat menetapkan atribut android:sharedUserMaxSdkVersion ke 32, seperti yang ditampilkan dalam cuplikan kode berikut:

<manifest ...>
    <!-- To maintain backward compatibility, continue to use
         "android:sharedUserId" if you already added it to your manifest. -->
    android:sharedUserId="SHARED_PACKAGE_NAME"
    android:sharedUserMaxSdkVersion="32"
    ...
</manifest>

Atribut baru ini memberi tahu sistem bahwa aplikasi Anda tidak lagi bergantung pada ID pengguna bersama. Jika aplikasi Anda mendeklarasikan android:sharedUserMaxSdkVersion dan baru diinstal di perangkat yang menjalankan Android 13 atau lebih tinggi, aplikasi akan berperilaku seolah-olah Anda tidak pernah menentukan android:sharedUserId. Aplikasi yang diupdate tetap menggunakan ID pengguna bersama yang ada.

ID pengguna bersama menyebabkan perilaku nondeterministik dalam pengelola paket. Aplikasi Anda sebaiknya menggunakan mekanisme komunikasi yang tepat, seperti layanan dan penyedia konten, untuk memfasilitasi interoperabilitas antara komponen bersama.

Pengalaman pengguna

Pemilih bahasa dalam aplikasi

Android 13 menambahkan lokasi terpusat di setelan ponsel untuk menyetel preferensi bahasa per aplikasi. Jika aplikasi Anda mendukung beberapa bahasa, kami sangat menyarankan Anda mendeklarasikan atribut android:localeConfig dalam manifes aplikasi agar pengguna dapat mengubah setelan bahasa aplikasi Anda di tempat mereka mengubah setelan bahasa untuk aplikasi lain.

Sebagai tambahan, aplikasi yang saat ini menggunakan pemilih bahasa kustom dalam aplikasi harus menggunakan API baru untuk preferensi bahasa per aplikasi . Menggunakan API baru membantu Anda memastikan bahwa pengguna melihat aplikasi Anda dalam bahasa pilihan mereka, terlepas dari apakah mereka terus memilih bahasa melalui pemilih bahasa dalam aplikasi Anda, atau apakah mereka memilih bahasa melalui setelan ponsel mereka.

Aplikasi yang tidak mendukung banyak bahasa tidak terpengaruh oleh perubahan ini.

Fungsi inti

Salinan implementasi layanan ucapan lama dihapus

Android 13 menghapus implementasi SpeechService—termasuk

IME suara, RecognitionService dan API berbasis intent—dari aplikasi Google.

Di Android 12, perubahan berikut terjadi:

  • Fungsi SpeechService dimigrasikan ke Layanan Ucapan dari aplikasi Google, yang menjadi penyedia SpeechService default.
  • Fungsi RecognitionService dipindahkan ke aplikasi Android System Intelligence untuk mendukung pengenalan ucapan di perangkat.

Untuk membantu mempertahankan kompatibilitas aplikasi di Android 12, aplikasi Google menggunakan trampolin untuk mengalihkan traffic ke aplikasi Layanan Ucapan dari Google. Di Android 13, trampolin ini dihapus.

Aplikasi harus menggunakan penyedia default perangkat untuk SpeechService, bukan melakukan hard code pada aplikasi tertentu.