He creado una aplicación y con un evento logro agregar notificaciones en la barra de notificaciones de Android. ¿Ahora necesito una muestra de cómo eliminar esa notificación de la barra de notificaciones en un evento?
He creado una aplicación y con un evento logro agregar notificaciones en la barra de notificaciones de Android. ¿Ahora necesito una muestra de cómo eliminar esa notificación de la barra de notificaciones en un evento?
Respuestas:
Esto es bastante simple Tiene que llamar cancel
o cancelAll
en su NotificationManager. El parámetro del método de cancelación es el ID de la notificación que debe cancelarse.
Consulte la API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)
Puedes probar 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);
}
También puede llamar cancelAll
al administrador de notificaciones, para que ni siquiera tenga que preocuparse por los identificadores de notificación.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDITAR: me rechazaron, así que tal vez debería especificar que esto solo eliminará la notificación de su aplicación.
startForeground(NOTIFICATION_ID, mNotification);
simplemente configure setAutoCancel (True) como el siguiente 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());`
esto ayudará:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
esto debería eliminar todas las notificaciones realizadas por la aplicación
y si crea una notificación llamando
startForeground();
dentro de un servicio, puede que tenga que llamar
stopForeground(false);
primero, luego cancele la notificación.
Si está generando una Notificación desde un Servicio que se inicia en primer plano utilizando
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Luego emitiendo
notificationManager.cancel(NOTIFICATION_ID);
no funciona cancelando la Notificación y notificación todavía aparece en la barra de estado. En este caso particular, resolverá esto de 2 maneras:
1> Uso de stopForeground (falso) dentro del servicio:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Destruya esa clase de servicio con actividad de llamada:
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);
¡La segunda forma prefiere la notificación del reproductor de música más porque no solo elimina la notificación, sino que también elimina el reproductor ...!
stopForeground(true); manager.cancelAll();
es lo que me resolvió!
Por favor intente esto,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
Use el NotificationManager para cancelar su notificación. Solo necesita proporcionar su identificación de notificación
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
también revise este enlace Ver enlace de desarrollador
NotificationManager.cancel(id)
Es la respuesta correcta. Sin embargo, puede eliminar en Android Oreo y notificaciones posteriores eliminando todo el canal de notificación. Esto debería eliminar todos los mensajes en el canal eliminado.
Aquí está el ejemplo de la documentación de Android :
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
En la API de Android> = 23, puede hacer algo como esto para eliminar un grupo de notificaciones.
for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
mNotificationManager.cancel(statusBarNotification.getId());
}
}