34

У кого-нибудь есть идея, как мы можем программно удалить уведомление из приложения, которое вызывается с использованием ожидающего намерения.Как удалить уведомление из панели уведомлений программным способом в android?

Я использовал, чтобы отменить уведомление, используя следующий способ.

AlarmManager am=(AlarmManager)getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(Display.this, TwoAlarmService.class); 
PendingIntent pi = PendingIntent.getBroadcast(Display.this, AlarmNumber, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
am.cancel(pi); 

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

Заранее спасибо ...

enter image description here

+0

привет я не знаю, можно ли удалить уведомление programaticaly, но вы можете изменить старое уведомление с новым это точно. если это полнота вашего требования, то я могу отправить код для вас здесь. plz ответить –

+0

Нет, на самом деле у меня есть два разных уведомления, и я уже отменяю уведомление. –

ответ

105

Может попробовать это:

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

ИЛИ, вы также можете сделать это, чтобы отменить все уведомления в данном контексте:

notificationManager.cancelAll(); 

Посмотрите эту ссылку на документацию: NotificationManager

+0

Это действительно сработало !!! :) Спасибо ... –

+4

Я не вижу смысла 'if (Context.NOTIFICATION_SERVICE! = Null)', потому что это константа String и никогда не будет null. – tar

+4

Вы правы, этот тест бесполезен, я не знаю, почему я это сделал (удалил): / –

0

Уведомления остаются видимыми, пока один из следующих не происходит:

Пользователь отклоняет уведомление либо по отдельности, либо с помощью «Clear All» (если уведомление может быть очищено). Пользователь нажимает уведомление, и вы вызывали setAutoCancel(), когда вы создали уведомление. Вы вызываете cancel() для определенного идентификатора уведомления. Этот метод также удаляет текущие уведомления. Вы вызываете cancelAll(), который удаляет все уведомления, которые вы ранее выдавали. Если вы устанавливаете тайм-аут при создании уведомления с помощью setTimeoutAfter(), система отменяет уведомление по истечении указанной продолжительности. При необходимости, вы можете отменить уведомления до истечения указанной продолжительности тайм-аута истечь общественности недействительным cancelNotification() {

String ns = NOTIFICATION_SERVICE; 
    NotificationManager nMgr = (NotificationManager) getActivity().getApplicationContext().getSystemService(ns); 
    nMgr.cancel(NOTIFICATION_ID); 
} 
Смежные вопросы