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);
Flo
sumber

Jawaban:

305

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

Kamil Lelonek
sumber
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

synic
sumber
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;
Darcy
sumber
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
2

Jawaban bagi saya adalah menggunakan mBuilder.setOngoing(false)

Suku Mesin
sumber
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);
Sachin Suthar
sumber
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

malaikat
sumber