Я создал приложение и с событием, которое мне удалось добавить уведомление в панели уведомлений Android. Теперь мне нужно попробовать, как удалить это уведомление из панели уведомлений о событии?
Android: удалить уведомление из панели уведомлений
Ответ 1
Это довольно просто. Вы должны вызвать cancel
или cancelAll
в своем NotificationManager. Параметр метода отмены - это идентификатор уведомления, который должен быть отменен.
См. API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Ответ 2
Вы можете попробовать этот быстрый код
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Ответ 3
Вы также можете вызвать cancelAll
в диспетчере уведомлений, поэтому вам даже не нужно беспокоиться об идентификаторах уведомлений.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDIT: я был заблокирован, поэтому, возможно, я должен указать, что это только удалит уведомление из вашего приложения.
Ответ 4
просто установите setAutoCancel (True) как следующий код:
Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
GameLevelsActivity.this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
getApplicationContext()).setSmallIcon(R.drawable.icon)
.setContentTitle(adv_title)
.setContentText(adv_desc)
.setContentIntent(resultPendingIntent)
//HERE IS WHAT YOY NEED:
.setAutoCancel(true);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`
Ответ 5
Если вы генерируете Уведомление из службы, которое запускается в переднем плане, используя
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Затем выдача
notificationManager.cancel(NOTIFICATION_ID);
Не работает отмена уведомления, и уведомление все еще появляется в строке состояния. В этом конкретном случае вы решите их двумя способами:
1 > Использование функции stopForeground (false) внутри службы:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2 > Уничтожьте этот класс службы с активностью вызова:
Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
ServiceCallingActivity.activity.finish();
}
context.stopService(i);
Второй способ предпочтительнее в уведомлении музыкального плеера больше, потому что thay способ не только удалить уведомление, но и удалить плеер...!!
Ответ 6
это поможет:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
это должно удалить все уведомления, сделанные приложением
и если вы создаете уведомление по телефону
startForeground();
внутри службы. Вам, возможно, придется позвонить
stopForeground(false);
Сначала отмените уведомление.
Ответ 7
Используйте NotificationManager, чтобы отменить свое уведомление. Вам нужно только указать идентификатор вашего уведомления
mNotificationManager.cancel(YOUR_NOTIFICATION_ID);
также проверьте эту ссылку См. ссылку разработчика
Ответ 8
В Android API >= 23 вы можете сделать что-то вроде этого, чтобы удалить группу уведомлений.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}
Ответ 9
NotificationManager.cancel(id)
- правильный ответ. Тем не менее, вы можете удалить в Android Oreo и более поздние уведомления, удалив весь канал уведомлений. Это должно удалить все сообщения в удаленном канале.
Вот пример из документации Android:
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
Ответ 10
Пожалуйста, попробуйте это,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Ответ 11
Просто позвоните ID:
public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}