Criei um aplicativo e, com um evento, consigo adicionar uma notificação na barra de notificação do Android. Agora eu preciso provar como remover essa notificação da barra de notificação em um evento?
Criei um aplicativo e, com um evento, consigo adicionar uma notificação na barra de notificação do Android. Agora eu preciso provar como remover essa notificação da barra de notificação em um evento?
Respostas:
Isto é bem simples. Você precisa ligar cancel
ou cancelAll
no seu NotificationManager. O parâmetro do método cancel é o ID da notificação que deve ser cancelada.
Consulte a API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Você pode tentar este código rápido
public static void cancelNotification(Context ctx, int notifyId) {
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
nMgr.cancel(notifyId);
}
Você também pode chamar cancelAll
o gerenciador de notificações para não precisar se preocupar com os IDs de notificação.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDIT: eu recebi o voto negativo, então talvez eu deva especificar que isso removerá apenas a notificação do seu aplicativo.
startForeground(NOTIFICATION_ID, mNotification);
basta definir setAutoCancel (True) como o seguinte código:
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());`
isso vai ajudar:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
isso deve remover todas as notificações feitas pelo aplicativo
e se você criar uma notificação chamando
startForeground();
dentro de um Service.you pode ter que ligar
stopForeground(false);
primeiro, depois cancele a notificação.
Se você estiver gerando notificação a partir de um serviço iniciado em primeiro plano usando
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Então emitindo
notificationManager.cancel(NOTIFICATION_ID);
não funciona cancelando a notificação e notificação ainda aparece na barra de status. Nesse caso em particular, você os resolverá de duas maneiras:
1> Usando o serviço stopForeground (false) dentro do serviço:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Destrua essa classe de serviço com a atividade de chamada:
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);
A segunda maneira prefere mais na notificação do music player, porque não só remove a notificação, mas também remove o player ... !!
stopForeground(true); manager.cancelAll();
é o que resolveu para mim!
Por favor, tente isso,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Use o NotificationManager para cancelar sua notificação. Você só precisa fornecer seu ID de notificação
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
verifique também este link Veja o link do desenvolvedor
NotificationManager.cancel(id)
é a resposta correta. No entanto, você pode remover o Android Oreo e as notificações posteriores excluindo todo o canal de notificação. Isso deve excluir todas as mensagens no canal excluído.
Aqui está o exemplo da documentação do Android :
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
Na API do Android> = 23, você pode fazer algo assim para remover um grupo de notificações.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}