Видаліть повідомлення після натискання


120

Я хочу, щоб повідомлення було закрито після того, як користувач натисне на нього. Я бачив, що всі говорять про використання прапорів, але я не можу знайти їх ніде, тому що я використовую клас NotificationCompat.Builder, а не клас сповіщень. Хтось має ідею, як зробити так, щоб сповіщення було видалено власноруч?
Ось мій код, коли я встановлюю сповіщення:

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

Відповіді:


325

Просто, просто зателефонуйте до цього:

mBuilder.setAutoCancel(true);

Крім того, хоча це не дуже потрібно, якщо ви дійсно хочете використовувати FLAG_AUTO_CANCEL, просто зателефонуйте до цього, перш ніж дзвонити mNotificationManager.notify:

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

2
Це найкраща відповідь .. flag_auto_cancel не працював .. ти врятував мені день!
алематтіо

16
getNotificationsзастаріло, використовуйте: mBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;замість цього
блювер

mBuilder.build () також застаріло
Mansuu ....

2
коли я натискаю на сповіщення, цей набірAutoCancel (правда) справді працює. АЛЕ коли я натискаю на Дія у сповіщенні (дзвінок у моєму випадку), НЕ ПРАЦЮЄ!
Асинхрон-

1
Будь ласка , дивіться моє запитання тут: stackoverflow.com/questions/37595594 / ...
Async-

18

Спробуйте це....

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()тепер застаріле використання, .build()замість цьогоmBuilder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Shylendra Madda

9

Ось повідомлення:

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

Ключ за скасування натискання клацання:

            .setAutoCancel(true)

Я сподіваюся, що це вирішить питання.



1

У kotlin ви можете використовувати:

mBuilder.build().flags.and(Notification.FLAG_AUTO_CANCEL)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.