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

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;

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

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.



1

Dans kotlin, vous pouvez utiliser:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.