Как очистить уведомление в Android

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

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

Solutions Collecting From Web of "Как очистить уведомление в Android"

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

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

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

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

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

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

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

 notification.flags = Notification.FLAG_AUTO_CANCEL; 

.. и если у вас уже есть флаги, вы можете ИЛИ FLAG_AUTO_CANCEL следующим образом:

 notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL; 

Начиная с уровня 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()); } 

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

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

Если вы используете 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() устарел !!!

  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

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

 if (Build.VERSION.SDK_INT < 21) { cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId()); } else { cancelNotification(sbn.getKey()); } 

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

 startForeground(NOTIFICATION_ID, notificationBuilder.build()); 

Затем выдача

 notificationManager.cancel(NOTIFICATION_ID); 

Не отменяет Уведомление, и уведомление все еще появляется в строке состояния. В этом конкретном случае вам нужно будет

 stopForeground( true ); 

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

 stopForeground( false ); notificationManager.cancel(NOTIFICATION_ID); 
  // Get a notification builder that's compatible with platform versions // >= 4 NotificationCompat.Builder builder = new NotificationCompat.Builder( this); builder.setSound(soundUri); builder.setAutoCancel(true); 

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

  Notification mNotification = new Notification.Builder(this) .setContentTitle("A message from: " + fromUser) .setContentText(msg) .setAutoCancel(true) .setSmallIcon(R.drawable.app_icon) .setContentIntent(pIntent) .build(); 

.setAutoCancel (правда)

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