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 panggilan yang 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 merupakan peristiwa prioritas tinggi, notifikasi ini menerima prioritas teratas di menu notifikasi. Urutan ini juga memungkinkan sistem untuk meneruskan panggilan yang diprioritaskan ini ke perangkat lain.
Template notifikasi CallStyle menyertakan tindakan wajib berikut:
- Jawab atau Tolak untuk panggilan masuk.
- Tutup untuk panggilan yang sedang berlangsung.
- Jawab atau Tutup untuk penyaringan panggilan.
Tindakan dalam gaya ini muncul sebagai tombol, dengan sistem yang otomatis menambahkan ikon dan teks yang sesuai. Pelabelan manual tombol 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. Masing-masing 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 bahwa PendingIntent dapat digunakan meskipun aplikasi yang membuatnya tidak lagi berjalan. Saat Anda memberikan PendingIntent ke aplikasi lain, Anda memberinya
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 (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)
Memberikan kompatibilitas di lebih banyak versi Android
Kaitkan notifikasi CallStyle di API versi 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 di API versi 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 telekomunikasi.