Как убрать уведомление в Android - PullRequest
91 голосов
/ 19 апреля 2010

Можно ли очистить уведомление программно?

Я пробовал с NotificationManager, но он не работает. Есть ли другой способ, которым я могу это сделать?

Ответы [ 12 ]

217 голосов
/ 02 ноября 2012

Используйте следующий код для отмены уведомления:

NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);

В этом коде всегда используется один и тот же идентификатор, используемый для уведомлений. Если у вас есть другие уведомления, которые нужно отменить, вы должны сохранить идентификаторы, которые вы использовали для создания уведомления.

41 голосов
/ 11 мая 2010

От: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

Чтобы очистить уведомление строки состояния, когда пользователь выбирает его в окне уведомлений, добавьте флаг «FLAG_AUTO_CANCEL» к объекту уведомления. Вы также можете удалить его вручную с помощью cancel (int), передав ему идентификатор уведомления, или удалить все ваши уведомления с помощью cancelAll ().

Но Донал прав, вы можете очистить только созданные вами уведомления.

32 голосов
/ 03 июня 2011

Поскольку никто не опубликовал кодовый ответ на этот вопрос:

notification.flags = Notification.FLAG_AUTO_CANCEL;

.. и если у вас уже есть флаги, вы можете ИЛИ FLAG_AUTO_CANCEL вот так:

notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
15 голосов
/ 15 июня 2016

Попробуйте использовать метод по умолчанию, указанный в NotificationManager .

NotificationManager.cancelAll(), чтобы удалить все уведомления.NotificationManager.cancel(notificationId) для удаления определенного уведомления.

8 голосов
/ 06 сентября 2014

Начиная с уровня API 18 (Jellybean MR2), вы можете отменить уведомления, кроме ваших, через NotificationListenerService.

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}

...

private void clearNotificationExample(StatusBarNotification sbn) {
    myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
4 голосов
/ 08 марта 2017
 Notification mNotification = new Notification.Builder(this)

                .setContentTitle("A message from: " + fromUser)
                .setContentText(msg)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.app_icon)
                .setContentIntent(pIntent)
                .build();

.setAutoCancel (истина)

когда вы нажимаете на уведомление, открываете соответствующее действие и удаляете уведомление из панели уведомлений

3 голосов
/ 14 апреля 2014

Если вы используете NotificationCompat.Builder (часть android.support.v4), просто вызовите метод его объекта setAutoCancel

NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);

Некоторые ребята сообщали, что setAutoCancel() у них не работает, так что вы можете попробовать и этот способ

builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;

Обратите внимание, что метод getNotification() устарел !!!

1 голос
/ 05 июля 2015

На самом деле, как и было получено до начала использования API уровня 18, вы можете отменить уведомления, отправленные другими приложениями, отличающимися от ваших, используя NotificationListenerService, но этот подход больше не будет работать на Lollipop, вот способ удаления уведомлений, относящихся также к Lillipop API.

if (Build.VERSION.SDK_INT < 21) {
    cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
    cancelNotification(sbn.getKey());
}
1 голос
/ 13 апреля 2015
   String ns = Context.NOTIFICATION_SERVICE;
  NotificationManager Nmang = (NotificationManager) getApplicationContext()
                                                     .getSystemService(ns);
  Nmang .cancel(getIntent().getExtras().getInt("notificationID"));

для более подробной информации нажмите здесь http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html

1 голос
/ 07 ноября 2013
    // Get a notification builder that's compatible with platform versions
    // >= 4
    NotificationCompat.Builder builder = new NotificationCompat.Builder(
            this);
    builder.setSound(soundUri);
    builder.setAutoCancel(true);

это работает, если вы используете построитель уведомлений ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...