Supprimer la notification après avoir cliqué

120

Je veux que la notification soit fermée après que l'utilisateur clique dessus. J'ai vu que tout le monde disait d'utiliser des indicateurs, mais je ne trouve les indicateurs nulle part car j'utilise la classe NotificationCompat.Builder et non la classe Notification. Quelqu'un a une idée comment faire supprimer la notification par lui-même?
Voici mon code lorsque je configure la notification:

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
la source

Réponses:

325

Facile, appelez simplement ceci:

mBuilder.setAutoCancel(true);

De plus, même si ce n'est pas vraiment nécessaire, si vous voulez vraiment utiliser FLAG_AUTO_CANCEL, appelez simplement ceci avant d'appeler mNotificationManager.notify:

mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
ingh.am
la source
2
C'est la meilleure réponse ... le flag_auto_cancel ne fonctionnait pas ... vous avez sauvé ma journée!
allemattio
16
getNotificationsest obsolète, utilisez: à la mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;place
blueware
mBuilder.build () est également obsolète
Mansuu ....
2
lorsque je tape sur la notification, ce setAutoCancel (true) fonctionne, en effet. MAIS lorsque je clique sur Action dans la notification (appelez dans mon cas), cela NE FONCTIONNE PAS!
Async-
1
Veuillez consulter ma question ici: stackoverflow.com/questions/37595594/…
Async-
18

Essaye ça....

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
la source
1
.getNotification()est obsolète maintenant utiliser à la .build()place commemBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda
9

Voici la notification:

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

la clé derrière l'annulation au clic est:

            .setAutoCancel(true)

j'espère que cela résout le problème.

Ali Nawaz
la source
1

Dans kotlin, vous pouvez utiliser:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Ricardo
la source