Di Android 12.0 (API level 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 sedang berlangsung. Template ini mendukung notifikasi format besar yang menyertakan informasi penelepon dan tindakan yang diperlukan seperti menjawab atau menolak panggilan.
Karena panggilan masuk dan sedang berlangsung adalah peristiwa prioritas tinggi, notifikasi ini menerima prioritas tertinggi di panel samping notifikasi. Urutan ini juga memungkinkan sistem 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 tindakan ini adalah referensi ke token yang dikelola oleh sistem. Token adalah objek ringan yang dapat diteruskan antar-aplikasi dan proses yang berbeda. Sistem bertanggung jawab untuk mengelola masa aktif token dan memastikan bahwa PendingIntent dapat digunakan meskipun aplikasi yang membuatnya tidak lagi berjalan. Saat Anda memberikan PendingIntent ke aplikasi lain, Anda memberikan izin 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 (API level 34), Anda dapat mengonfigurasi notifikasi panggilan agar tidak dapat ditutup. Untuk melakukannya, gunakan CallStyle notifikasi dengan
Notification.FLAG_ONGOING_EVENT melalui
Notification.Builder#setOngoing(true).
Berikut adalah contoh penggunaan berbagai metode dengan notifikasi CallStyle.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
Panggilan masuk
Gunakan metode forIncomingCall() untuk membuat notifikasi gaya panggilan untuk panggilan masuk.
// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forIncomingCall(caller, 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 builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forOngoingCall(caller, hangupIntent))
.addPerson(second_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 = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
.addPerson(second_caller)
Menyediakan kompatibilitas di lebih banyak versi Android
Mengaitkan notifikasi CallStyle pada versi API 30 atau yang lebih lama dengan layanan latar depan untuk menetapkan peringkat tinggi yang diberikan di API level 31 atau yang lebih baru. Selain itu, CallStyle notifikasi pada versi API 30
atau yang lebih lama dapat mencapai peringkat yang serupa dengan menandai notifikasi sebagai
berwarna, menggunakan metode setColorized().
Gunakan Telecom API dengan notifikasi CallStyle. Untuk mengetahui informasi selengkapnya, lihat
Ringkasan framework Telecom.