web-dev-qa-db-fra.com

Supprimer la notification après avoir cliqué

Je veux que la notification sera fermée après que l'utilisateur clique dessus. J'ai vu que tout le monde demandait d'utiliser des drapeaux, mais je ne les trouve nulle part parce que j'utilise la classe NotificationCompat.Builder et non la classe Notification. Quelqu'un a une idée de comment faire en sorte que la notification se supprime d'elle-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());
114
Yossi Zloof

Facile, appelez simplement ceci:

mBuilder.setAutoCancel(true);

De plus, bien que ce ne soit 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;
309
ingh.am

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

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ésoudra le problème.

5
Ali Nawaz

Vous pouvez ajouter un drapeau à votre notification:

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

Cela le rejettera en cliquant.

2
JoxTraex

En kotlin, vous pouvez utiliser:

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