Я створив додаток і за допомогою події мені вдається додати повідомлення в панель сповіщень для Android. Тепер мені потрібен зразок, як видалити це повідомлення з панелі сповіщень про подію ??
Я створив додаток і за допомогою події мені вдається додати повідомлення в панель сповіщень для Android. Тепер мені потрібен зразок, як видалити це повідомлення з панелі сповіщень про подію ??
Відповіді:
Це досить просто. Вам потрібно зателефонувати cancel
або cancelAll
на ваш NotificationManager. Параметр методу скасування - це ідентифікатор сповіщення, який слід скасувати.
Дивіться API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Ви можете спробувати цей швидкий код
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Ви також можете зателефонувати cancelAll
менеджеру сповіщень, тому вам навіть не доведеться турбуватися про ідентифікаційні повідомлення.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
РЕДАКТИРУВАННЯ: Мені було прийнято рішення, тому, можливо, я повинен зазначити, що це видалить лише повідомлення з вашої заявки.
startForeground(NOTIFICATION_ID, mNotification);
просто встановіть 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());`
це допоможе:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
це повинно видалити всі сповіщення, зроблені додатком
і якщо ви створите сповіщення, зателефонувавши
startForeground();
всередині сервісу. Можливо, вам доведеться зателефонувати
stopForeground(false);
спочатку скасуйте сповіщення.
Якщо ви генеруєте сповіщення зі служби , запущеної на передньому плані, використовуючи
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Потім видача
notificationManager.cancel(NOTIFICATION_ID);
не працює, скасовуючи Повідомлення та сповіщення, все ще відображається в рядку стану. У цьому конкретному випадку ви вирішите це двома способами:
1> Використання stopForeground (помилково) всередині сервісу:
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);
Другий спосіб віддайте перевагу в музичному плеєрі сповіщення більше, тому що цей спосіб не тільки видалити повідомлення, але видалити програвач також ... !!
stopForeground(true); manager.cancelAll();
- це для мене це вирішило!
Спробуйте,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Використовуйте NotificationManager, щоб скасувати своє повідомлення. Потрібно лише вказати свій ідентифікатор сповіщення
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
також перевірте це посилання. Див. Посилання для розробників
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);
В Android API> = 23 ви можете зробити щось подібне, щоб видалити групу сповіщень.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}