¿Es posible borrar una notificación mediante programación?
Lo intenté con el NotificationManager
pero no funciona. ¿Hay alguna otra forma en que pueda hacerlo?
¿Es posible borrar una notificación mediante programación?
Lo intenté con el NotificationManager
pero no funciona. ¿Hay alguna otra forma en que pueda hacerlo?
Respuestas:
Utilice el siguiente código para cancelar una notificación:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
En este código siempre se usa la misma identificación para las notificaciones. Si tiene diferentes notificaciones que deben cancelarse, debe guardar los identificadores que utilizó para crear la notificación.
setContentText
), aunque configuré la prioridad en 2. ¿Alguna sugerencia?
De: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Para borrar la notificación de la barra de estado cuando el usuario la selecciona en la ventana de notificaciones, agregue la bandera "FLAG_AUTO_CANCEL" a su objeto de notificación. También puede borrarlo manualmente con cancel (int), pasándole el ID de notificación o borrar todas sus Notificaciones con cancelAll ().
Pero Donal tiene razón, solo puede borrar las notificaciones que creó.
Dado que nadie ha publicado una respuesta en código a esto:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. y si ya tienes banderas, puedes OR FLAG_AUTO_CANCEL así:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
Pruebe el método predeterminado proporcionado en NotificationManager .
NotificationManager.cancelAll()
para eliminar todas las notificaciones.
NotificationManager.cancel(notificationId)
para eliminar una notificación particular.
cancel
método, el cancel
método no es estático, por lo que necesita una instancia NotificationManager
como esta: NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Luego puede llamar notificationManager.cancel(notificationId);
como Rohit Suthar al que se hace referencia en su respuesta. notificationId
es simplemente la identificación que notificationManager.notify(notificationId, mNotification)
A partir del nivel de API 18 (Jellybean MR2), puede cancelar notificaciones que no sean las suyas a través de NotificationListenerService.
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}
...
private void clearNotificationExample(StatusBarNotification sbn) {
myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (verdadero)
cuando hace clic en la notificación, abre la actividad correspondiente y elimina la notificación de la barra de notificaciones
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 termina cancelando la Notificación, y la notificación sigue apareciendo en la barra de estado. En este caso particular, deberá emitir
stopForeground( true );
desde el servicio para volver a ponerlo en segundo plano y cancelar simultáneamente las notificaciones. Alternativamente, puede colocarlo en segundo plano sin que cancele la notificación y luego cancelar la notificación.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
Si está usando NotificationCompat.Builder
(una parte de android.support.v4
), simplemente llame al método de su objetosetAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Algunos chicos informaron que setAutoCancel()
no funcionó para ellos, por lo que puede intentarlo de esta manera también
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Tenga en cuenta que el método getNotification()
ya no se utiliza !!!
// Get a notification builder that's compatible with platform versions
// >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSound(soundUri);
builder.setAutoCancel(true);
esto funciona si está utilizando un generador de notificaciones ...
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager Nmang = (NotificationManager) getApplicationContext()
.getSystemService(ns);
Nmang .cancel(getIntent().getExtras().getInt("notificationID"));
para obtener más referencias, haga clic aquí http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html
En realidad, como se respondió antes de comenzar con API Nivel 18, puede cancelar las notificaciones publicadas por otras aplicaciones diferentes a la suya usando NotificationListenerService, pero ese enfoque ya no funcionará en Lollipop, aquí está la forma de eliminar las notificaciones que cubren también la API de Lillipop.
if (Build.VERSION.SDK_INT < 21) {
cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
cancelNotification(sbn.getKey());
}
cancelNotification
¿qué es?
Todas las notificaciones (incluso otras notificaciones de aplicaciones) se pueden eliminar escuchando 'NotificationListenerService' como se menciona en la Implementación de NotificationListenerService
En el servicio tienes que llamar cancelAllNotifications()
.
El servicio debe estar habilitado para su aplicación a través de:
'Aplicaciones y notificaciones' -> 'Acceso a aplicaciones especiales' -> 'Acceso a notificaciones'.
este código funcionó para mí:
public class ExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 1;
notificationManager.cancel(notificationId);
}
}
Creo que el más RECIENTE y ACTUALIZADO para AndroidX y la compatibilidad con versiones anteriores. La mejor forma de hacerlo (Kotlin y Java) debe hacerse como:
NotificationManagerCompat.from(context).cancel(NOTIFICATION_ID)
O cancelar todas las notificaciones es:
NotificationManagerCompat.from(context).cancelAll()
Hecho para AndroidX o bibliotecas de soporte.