Entfernen Sie die Benachrichtigung nach dem Klicken


120

Ich möchte, dass die Benachrichtigung geschlossen wird, nachdem der Benutzer darauf geklickt hat. Ich habe gesehen, dass alle gesagt haben, Flags zu verwenden, aber ich kann die Flags nirgendwo finden, weil ich die NotificationCompat.Builder-Klasse und nicht die Notification-Klasse verwende. Hat jemand eine Idee, wie man die Benachrichtigung selbst entfernen kann?
Hier ist mein Code, wenn ich die Benachrichtigung einstelle:

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());

Antworten:


325

Einfach, nenne das einfach:

mBuilder.setAutoCancel(true);

Auch wenn es nicht wirklich notwendig ist, FLAG_AUTO_CANCELrufen Sie dies einfach auf, bevor Sie anrufen , wenn Sie es wirklich verwenden möchten mNotificationManager.notify:

mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;

2
Dies ist die beste Antwort. Das flag_auto_cancel hat nicht funktioniert. Du hast meinen Tag gerettet!
Allemattio

16
getNotificationsist veraltet, verwenden Sie: mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;stattdessen
Blueware

mBuilder.build () ist ebenfalls veraltet
Mansuu ....

2
Wenn ich auf Benachrichtigung tippe, funktioniert dieses setAutoCancel (true) tatsächlich. ABER wenn ich in der Benachrichtigung auf Aktion klicke (in meinem Fall anrufen), FUNKTIONIERT es NICHT!
Async

1
Bitte sehen Sie meine Frage hier: stackoverflow.com/questions/37595594/…
Async-

18

Versuche dies....

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());

1
.getNotification()ist veraltet jetzt verwenden Sie .build()stattdessen wiemBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda

9

Hier ist eine Benachrichtigung:

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

Der Schlüssel hinter der Stornierung beim Klicken ist:

            .setAutoCancel(true)

Ich hoffe, es löst die Angelegenheit.



1

In Kotlin können Sie Folgendes verwenden:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.