Notifikasi Android tidak hilang setelah mengklik pemberitahuan


133

Jika ada masalah dengan pemberitahuan yang ingin saya tampilkan di bilah pemberitahuan. Meskipun saya mengatur bendera notifikasi ke Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCELnotifikasi tidak hilang setelah mengkliknya. Ada ide yang saya lakukan salah?

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    int icon = R.drawable.icon;
    CharSequence tickerText = "Ticker Text";
    long time = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, time);
    notification.flags = Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL; 

    Context context = getApplicationContext();
    CharSequence contentTitle = "Title";
    CharSequence contentText = "Text";
    Intent notificationIntent = new Intent(this, SilentFlipConfiguration.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
    mNotificationManager.notify(1,notification);

Jawaban:


305

Sambil membangun Notificationoleh NotificationBuilderAnda dapat menggunakan notificationBuilder.setAutoCancel(true);.


2
Jadi, apa perbedaan membuat pemberitahuan menggunakan Notification mNotificationManager.notify(1,notification);dan using NotificationBuilder mNotificationManager.notify(1, mBuilder.build());? Terima kasih.
Yohanes AI

9
Jawaban ini harus diterima, itu lebih sesuai dengan doktrin desain android saat ini
jmaculate

Jawaban ini benar. Satu diterima tetapi tidak selalu. Ada masalah saat ada pemberitahuan yang ditumpuk di GCM (atau apa pun yang Anda gunakan). Setelah Anda melakukan ping ke server pemberitahuan, ia akan kembali dengan banyak pemberitahuan dan kadang-kadang ia hanya membatalkan tampilan pemberitahuan.
Nikola Milutinovic

5
notificationBuilder.setAutoCancel(true);tidak bekerja untuk saya. Haruskah saya letakkan sebelum Inting Pending saya?
Kairi San

129
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL

Dari dokumentasi:

Agak menjadi bitwise- atau ed ke bidang bendera yang harus ditetapkan jika pemberitahuan harus dibatalkan ketika diklik oleh pengguna


3
Ini bukan jawaban yang benar. Notification.DEFAULT_LIGHTSadalah bagian dari Notification.defaultskelas, bukan Notification.flagskelas. Lihat jawaban saya untuk setter yang sesuai.
Darcy

notification.flags = Pemberitahuan.DEFAULT_LIGHTS | Notifikasi.FLAG_AUTO_CANCEL; Metode ini berfungsi, terima kasih, synic.
Ravikumar11

1
Kode dalam jawaban ini menghasilkan bunyi notifikasi diputar beberapa kali. Lihat jawaban lainnya.
larangan geoengineering

27
// Uses the default lighting scheme
notification.defaults |= Notification.DEFAULT_LIGHTS;

// Will show lights and make the notification disappear when the presses it
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;

1
Saya telah melalui dokumen Android. Saya tidak mengerti kapan bendera harus digunakan. Mengapa tidak hanya notification.defaults = notification.DEFAULT_LIGHTS cukup untuk menunjukkan lampu. Karena kerja getar dan bunyi tanpa bendera.
Ashwin

Saya menggunakan NotificationBuilder, NotificationCompat.Builder mBuilder = NotificationCompat.Builder baru (ini) .setSmallIcon (android.R.drawable.ic_popup_sync) .setContentTitle ("Tweet Baru") .setContentTitle ("Ada Tweet"). ; mBuilder.setDefaults (NotificationCompat.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL);
Joseph



1

Gunakan bendera Notification.FLAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

dan untuk meluncurkan aplikasi:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(context, App.class);

PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

0

Hapus pemberitahuan

Pemberitahuan tetap terlihat sampai salah satu dari yang berikut terjadi:

  1. Pengguna menolak pemberitahuan.
  2. Pengguna mengklik notifikasi, dan Anda menelepon setAutoCancel () ketika Anda membuat notifikasi.
  3. Anda memanggil cancel () untuk ID notifikasi tertentu. Metode ini juga menghapus notifikasi yang sedang berlangsung.
  4. Anda memanggil cancelAll (), yang menghapus semua notifikasi yang sebelumnya Anda keluarkan.
  5. Jika Anda mengatur batas waktu saat membuat pemberitahuan menggunakan setTimeoutAfter (), sistem membatalkan pemberitahuan setelah durasi yang ditentukan berlalu. Jika diperlukan, Anda dapat membatalkan pemberitahuan sebelum durasi waktu yang ditentukan berlalu.

Untuk detail selengkapnya, lihat: https://developer.android.com/training/notify-user/build-notification?hl=id

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.