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());
Yossi Zloof
quelle

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;
ingh.am
quelle
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());
Silambarasan Poonguti
quelle
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.

Ali Nawaz
quelle
1

In Kotlin können Sie Folgendes verwenden:

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