android - sobre - que son los puntos de notificacion
Android: eliminar la notificación de la barra de notificaciones (11)
He creado una aplicación y con un evento logro agregar una notificación 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?
En Android API> = 23 puedes 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());
}
}
Por favor, intente esto,
public void removeNotification(Context context, int notificationId) {
NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancel(notificationId);
}
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);
}
Si está generando una notificación desde un servicio que se inicia en primer plano usando
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Luego emitiendo
notificationManager.cancel(NOTIFICATION_ID);
no funciona cancelando la notificación y la notificación aún aparece en la barra de estado. En este caso particular, los resolverá de 2 maneras:
1> Usando stopForeground (falso) dentro del servicio:
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
2> Destruye esa clase de servicio con actividad de llamadas:
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 manera prefiere más en la notificación del reproductor de música porque de esa manera no solo se elimina la notificación sino que también se elimina al jugador ...!
Solo llame a ID:
public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
También puede llamar a cancelAll
en el administrador de notificaciones, para que no tenga que preocuparse por las identificaciones de notificación.
NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();
EDITAR: Me downvoted así que tal vez debería especificar que esto solo eliminará la notificación de su aplicación.
Use NotificationManager para cancelar su notificación. Solo necesita proporcionar su identificación de notificación
mNotificationManager.cancel (YOUR_NOTIFICATION_ID);
también verifique este enlace Vea Enlace de desarrollador
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());`
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);
esto ayudará:
NotificationManager mNotificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cannelAll();
y si crea una notificación llamando
startForeground();
dentro de un Servicio. Puede que tenga que llamar
stopForeground(false);
primero, luego cancela la notificación.
Esto es bastante simple. cancelAll
llamar cancel
o cancel
en su NotificationManager. El parámetro del método de cancelar es la ID de la notificación que debe cancelarse.
Ver la API: http://developer.android.com/reference/android/app/NotificationManager.html#cancel(int)