Di Android 12.0 (level API 31) dan yang lebih baru, sistem menyediakan template notifikasi
CallStyle untuk membedakan notifikasi panggilan dari
jenis notifikasi lainnya. Gunakan template ini untuk membuat notifikasi panggilan masuk atau yang sedang berlangsung. Template ini mendukung notifikasi format besar yang menyertakan informasi pemanggil dan tindakan yang diperlukan seperti menjawab atau menolak panggilan.
Karena panggilan masuk dan sedang berlangsung merupakan acara berprioritas tinggi, notifikasi ini mendapatkan prioritas utama di menu notifikasi. Urutan ini juga memungkinkan sistem untuk meneruskan panggilan yang diprioritaskan ini ke perangkat lain.
Template notifikasi CallStyle mencakup tindakan wajib berikut:
- Jawab atau Tolak untuk panggilan masuk.
- Tutup telepon untuk panggilan yang sedang berlangsung.
- Jawab atau Tutup telepon untuk penyaringan panggilan.
Tindakan dalam gaya ini muncul sebagai tombol, dengan sistem yang otomatis menambahkan ikon dan teks yang sesuai. Pelabelan tombol secara manual tidak didukung. Untuk mengetahui informasi selengkapnya tentang prinsip desain notifikasi, lihat Notifikasi.
Tindakan yang diperlukan diteruskan sebagai intent, seperti hangupIntent dan
answerIntent di bagian berikut. Setiap token ini adalah referensi ke
token yang dikelola oleh sistem. Token adalah objek ringan yang
dapat diteruskan di antara berbagai aplikasi dan proses. Sistem bertanggung jawab untuk mengelola masa aktif token dan memastikan PendingIntent dapat digunakan meskipun aplikasi yang membuatnya tidak lagi berjalan. Saat Anda memberikan PendingIntent ke aplikasi lain, Anda memberikan izin
kepada aplikasi tersebut untuk melakukan operasi yang ditentukan, seperti menolak atau menjawab.
Izin ini diberikan meskipun aplikasi yang membuat intent tidak berjalan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi untuk
PendingIntent.
Mulai Android 14 (level API 34), Anda dapat mengonfigurasi notifikasi panggilan
agar tidak dapat ditutup. Untuk melakukannya, gunakan notifikasi CallStyle dengan
Notification.FLAG_ONGOING_EVENT melalui
Notification.Builder#setOngoing(true).
Berikut adalah contoh penggunaan berbagai metode dengan notifikasi CallStyle.
// Create a new call, setting incoming caller. val incomingCaller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
Panggilan masuk
Gunakan metode forIncomingCall() untuk membuat notifikasi gaya panggilan untuk panggilan masuk.
// For demonstrative purposes only, should use a well-defined Intents. val contentIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val declineIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val hangupIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) val answerIntent = PendingIntent.getActivity(context, 0, Intent(), PendingIntent.FLAG_IMMUTABLE) // Create a call style notification for an incoming call. val builderForIncomingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forIncomingCall(incomingCaller, declineIntent, answerIntent)) .addPerson(incomingCaller)
Panggilan sedang berlangsung
Gunakan metode forOngoingCall() untuk membuat notifikasi gaya panggilan untuk panggilan yang sedang berlangsung.
// Create a call style notification for an ongoing call. val builderForOngoingCall = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forOngoingCall(callerAtOtherEnd, hangupIntent)) .addPerson(caller)
Menyaring panggilan
Gunakan metode forScreeningCall() untuk membuat notifikasi gaya panggilan guna menyaring panggilan.
// Create a call style notification for screening a call. val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(caller)
Menyediakan kompatibilitas di lebih banyak versi Android
Kaitkan notifikasi CallStyle di versi API 30 atau yang lebih lama dengan
layanan latar depan untuk menetapkan peringkat tinggi yang diberikan di level API
31 atau yang lebih baru. Selain itu, notifikasi CallStyle pada API versi 30 atau yang lebih lama dapat mencapai peringkat serupa dengan menandai notifikasi sebagai berwarna, menggunakan metode setColorized().