Stworzyłem aplikację i wraz ze zdarzeniem udało mi się dodać powiadomienie w pasku powiadomień Androida. Teraz potrzebuję próbki, jak usunąć to powiadomienie z paska powiadomień na wydarzeniu?
Stworzyłem aplikację i wraz ze zdarzeniem udało mi się dodać powiadomienie w pasku powiadomień Androida. Teraz potrzebuję próbki, jak usunąć to powiadomienie z paska powiadomień na wydarzeniu?
Odpowiedzi:
To jest całkiem proste. Musisz zadzwonić cancel
lub skorzystać cancelAll
z NotificationManager. Parametrem metody anuluj jest identyfikator powiadomienia, które ma zostać anulowane.
Zobacz interfejs API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Możesz wypróbować ten szybki kod
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Możesz także zadzwonić cancelAll
do menedżera powiadomień, więc nie musisz się nawet martwić o identyfikatory powiadomień.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDYCJA: zostałem odrzucony, więc może powinienem sprecyzować, że spowoduje to tylko usunięcie powiadomienia z twojej aplikacji.
startForeground(NOTIFICATION_ID, mNotification);
po prostu ustaw setAutoCancel (True) jak w poniższym kodzie:
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());`
to pomoże:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
powinno to usunąć wszystkie powiadomienia wysłane przez aplikację
i jeśli utworzysz powiadomienie dzwoniąc
startForeground();
być może będziesz musiał zadzwonić
stopForeground(false);
najpierw, a następnie anuluj powiadomienie.
Jeśli generujesz powiadomienie z usługi, która jest uruchamiana na pierwszym planie przy użyciu
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Następnie wydawanie
notificationManager.cancel(NOTIFICATION_ID);
nie działa anulowanie Powiadomienia i powiadomienia nadal pojawiają się na pasku stanu. W tym konkretnym przypadku możesz rozwiązać te problemy na dwa sposoby:
1> Używanie stopForeground (false) inside service:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Zniszcz tę klasę usług za pomocą aktywności wywoływania:
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);
Drugi sposób bardziej preferuje powiadomienia odtwarzacza muzyki, ponieważ dzięki temu można nie tylko usunąć powiadomienia, ale także usunąć odtwarzacz ... !!
stopForeground(true); manager.cancelAll();
jest tym, co dla mnie rozwiązało!
Spróbuj tego,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Użyj NotificationManager, aby anulować powiadomienie. Musisz tylko podać swój identyfikator powiadomienia
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
sprawdź także ten link Zobacz link programisty
NotificationManager.cancel(id)
to poprawna odpowiedź. Możesz jednak usunąć powiadomienia w Androidzie Oreo i późniejszych, usuwając cały kanał powiadomień. Powinno to usunąć wszystkie wiadomości z usuniętego kanału.
Oto przykład z dokumentacji Androida :
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
W Android API> = 23 możesz zrobić coś takiego, aby usunąć grupę powiadomień.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}