Sejak API level 16 (Jelly Bean), ada kemungkinan untuk menambahkan tindakan ke notifikasi dengan
builder.addAction(iconId, title, intent);
Tetapi ketika saya menambahkan tindakan ke pemberitahuan dan tindakan ditekan, pemberitahuan tersebut tidak akan diberhentikan. Ketika pemberitahuan itu sendiri diklik, itu dapat diabaikan
notification.flags = Notification.FLAG_AUTO_CANCEL;
atau
builder.setAutoCancel(true);
Tapi jelas, ini tidak ada hubungannya dengan tindakan yang terkait dengan notifikasi.
Ada petunjuk? Atau apakah ini belum menjadi bagian dari API? Saya tidak menemukan apa pun.
sumber
Menemukan ini menjadi masalah ketika menggunakan pemberitahuan Tampilan Kepala Lollipop. Lihat pedoman desain . Inilah kode lengkap (ish) untuk diterapkan.
Sampai sekarang, memiliki tombol 'Singkirkan' itu kurang penting, tetapi sekarang lebih di wajah Anda.
Membangun Notifikasi
NotificationActivity
AndroidManifest.xml (atribut yang diperlukan untuk mencegah SystemUI fokus ke tumpukan belakang)
sumber
Saya menemukan bahwa ketika Anda menggunakan tombol aksi dalam pemberitahuan yang diperluas, Anda harus menulis kode tambahan dan Anda lebih dibatasi.
Anda harus membatalkan pemberitahuan secara manual saat pengguna mengklik tombol aksi. Pemberitahuan hanya dibatalkan secara otomatis untuk tindakan default.
Juga jika Anda memulai penerima siaran dari tombol, laci pemberitahuan tidak menutup.
Saya akhirnya membuat NotificationActivity baru untuk mengatasi masalah ini. Aktivitas perantara ini tanpa UI apa pun membatalkan pemberitahuan dan kemudian memulai aktivitas yang benar-benar ingin saya mulai dari pemberitahuan.
Saya telah memposting kode sampel di pos terkait Mengklik Tindakan Pemberitahuan Android tidak menutup laci Pemberitahuan .
sumber
Anda dapat selalu
cancel()
yangNotification
dari apa pun yang sedang dipanggil oleh tindakan (misalnya, dalamonCreate()
kegiatan terikat denganPendingIntent
Anda pasokan untukaddAction()
).sumber
cancel()
mengambil IDNotification
, yang Anda gunakan saat meneleponnotify()
. Anda tidak perluNotification
objek.ACTION_VIEW
dan jenisnyaimage/jpeg
(untuk berbagi gambar dengan aplikasi lain) lalu bagaimana cara membatalkan itu dipicu? IMO Android harus dibatalkan secara otomatis, saya bingung mengapa Android tidak hanya mengurusnya ?!Notification
terkaitPendingIntent
, itu tidak benar-benar bagaimana itu dirancang untuk bekerja, dan Anda akan mengalami masalah seperti ini. "IMO Android harus membatalkan otomatis" - Saya bisa melihat menawarkan bendera untuk itu pada tindakan, tetapi itu tidak harus menjadi hal yang selalu dilakukan. Jika ya, melewatkan trek di notifikasi pemutar musik akan menutup notifikasi.Menurut pendapat saya menggunakan a
BroadcastReceiver
adalah cara yang lebih bersih untuk membatalkan Pemberitahuan:Di AndroidManifest.xml:
Dalam File java:
NotificationCancelReceiver
sumber
intent.putExtra()
dan mendapatkannyaBroadcastReceiver
Di API baru jangan lupa tentang TAG:
dan dengan demikian
dari pada:
https://developer.android.com/reference/android/app/NotificationManager
sumber
cancel()
fungsi memiliki 2 implementasi; satu dengan TAG dan satu tanpa. Tetapi kita harus menyediakan aTAG
. Berikut adalahcancel
fungsi dari dokumenpublic void cancel(@Nullable String tag, int id)
. Terakhir diperiksa pada Android QCukup cantumkan baris ini:
Dan kode lengkapnya adalah:
sumber
Anda perlu menjalankan kode berikut setelah niat Anda dipecat untuk menghapus pemberitahuan.
NB: notificationId adalah id yang sama yang dilewati untuk menjalankan notifikasi Anda
sumber
builder.setAutoCancel (true);
Diuji pada Android 9 juga.
sumber