Hapus pemberitahuan setelah mengklik

120

Saya ingin notifikasi ditutup setelah pengguna mengkliknya. Saya melihat semua orang mengatakan untuk menggunakan flag, tetapi saya tidak dapat menemukan flag di mana pun karena saya menggunakan kelas NotificationCompat.Builder dan bukan kelas Notification. Ada yang tahu cara menghapus notifikasi sendiri?
Ini kode saya saat menyetel notifikasi:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("New Question")
            .setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + "");

    Intent openHomePageActivity = new Intent("com.example.ihelp.HOMEPAGEACTIVITY");
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addNextIntent(openHomePageActivity);

    PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);
    NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);       

    mNotificationManager.notify(0, mBuilder.build());
Yossi Zloof
sumber

Jawaban:

325

Mudah, cukup sebut ini:

mBuilder.setAutoCancel(true);

Selain itu, meskipun tidak terlalu diperlukan, jika Anda benar-benar ingin menggunakan FLAG_AUTO_CANCEL, cukup panggil ini sebelum menelepon mNotificationManager.notify:

mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
ingh.am
sumber
2
Ini adalah jawaban terbaik .. flag_auto_cancel tidak berfungsi..kamu menyelamatkan hariku!
allemattio
16
getNotificationssudah usang, gunakan: mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;sebagai gantinya
blueware
mBuilder.build () juga tidak digunakan lagi
Mansuu ....
2
ketika saya mengetuk notifikasi, setAutoCancel (true) ini memang berfungsi. TAPI ketika saya mengklik Tindakan di pemberitahuan (panggil dalam kasus saya), TIDAK BEKERJA!
Async-
1
Silakan lihat pertanyaan saya di sini: stackoverflow.com/questions/37595594/…
Async-
18

Coba ini....

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

 ..........
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.push_notify_icon)
            .setContentTitle("New Question!")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setAutoCancel(true).setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + "");
mBuilder.setContentIntent(contentIntent);

    ..............        


mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(0, mBuilder.build());
Silambarasan Poonguti
sumber
1
.getNotification()sudah usang sekarang gunakan .build()sebagai gantinyamBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda
9

Berikut pemberitahuannya:

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_calendar)
            .setContentTitle("My Firebase Push notification")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(soundUri)
            .setContentIntent(pendingIntent);

kunci di balik pembatalan saat diklik adalah:

            .setAutoCancel(true)

saya harap ini menyelesaikan masalah.

Ali Nawaz
sumber
1

Di kotlin, Anda dapat menggunakan:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Ricardo
sumber