131 votes

Supprimer la notification après un clic

Je veux que la notification soit fermée après que l'utilisateur ait cliqué dessus. J'ai vu que tout le monde disait d'utiliser des drapeaux, mais je ne trouve pas les drapeaux nulle part parce que j'utilise la classe NotificationCompat.Builder et non la classe Notification. Quelqu'un a-t-il une idée de la façon dont la notification peut être supprimée par elle-même ?
Voici mon code lorsque je règle 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());

346voto

ing0 Points 7411

Facile, il suffit de l'appeler :

mBuilder.setAutoCancel(true);

De plus, bien que ce ne soit pas vraiment nécessaire, si vous voulez vraiment utiliser FLAG_AUTO_CANCEL Appelez ceci avant d'appeler mNotificationManager.notify :

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

2 votes

C'est la meilleure réponse le flag_auto_cancel ne fonctionnait pas vous avez sauvé ma journée !

16 votes

getNotifications est déprécié, utilisez : mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL; au lieu de

0 votes

MBuilder.build() est également déprécié

19voto

Essayez ceci....

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 votes

.getNotification() est déprécié, utilisez maintenant .build() comme mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;

14voto

Ali Nawaz Points 472

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 sur clic est :

            .setAutoCancel(true)

J'espère que cela résoudra le problème.

3voto

JoxTraex Points 7068

Vous pouvez ajouter un indicateur à votre notification :

http://developer.Android.com/reference/Android/app/Notification.html#FLAG_AUTO_CANCEL

Cela permettra de l'écarter en cliquant dessus.

0 votes

Ajoutez-le au drapeau de notification de votre objet de notification.

2voto

Rincha Points 180

En kotlin, vous pouvez utiliser :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X