Cómo utilizar Notification.deleteIntent
Estoy tratando de detectar cuando se borra mi notificación. Mi pregunta se refiere directamente a esta respuesta que describe lo que se supone que debo hacer. Así es como estoy implementando las acciones:
// usual Notification initialization here notification.deleteIntent = PendingIntent.getService(context, 0, new Intent(context, CleanUpIntent.class), 0); notificationManager.notify(123, notification)
Esta es la clase CleanUpIntent:
- Programo una notificación local en un momento específico, utilizando el conmutador, pero su activación no a tiempo establecido
- Android: ejecutando una tarea de fondo con AlarmManager
- Cómo recibir notificaciones cuando se notifica una notificación
- Actualizar una notificación en curso en silencio
- No hay sonido de notificación al enviar notificación de firebase en android
class CleanUpIntent extends IntentService { public CleanUpIntent() { super("CleanUpIntent"); } @Override protected void onHandleIntent(Intent arg0) { // clean up code } }
Después, simplemente lanzar la notificación como lo haría normalmente, pero cuando voy a probarlo (presionando "Borrar todas las notificaciones") no pasa nada. He insertado una línea de código que imprimir algo a LogCat cuando IntentService se inicia, pero nada nunca se ejecutó. ¿Es esto como debo usar Notification.deleteIntent?
- ¿Puedo anular el icono predeterminado de notificación push en android desde el icono de la aplicación hasta el icono personalizado?
- El icono de notificación está en gris
- Android Notification no está mostrando Color Icon en Marshmallow
- ¿Existe una solución equivalente, como iOS's localNotification en la plataforma Android?
- Firebase que envía varias notificaciones push en lugar de apilar o reemplazar
- Cómo quitar la notificación de la barra de notificación mediante programación en android?
- Gestionar notificaciones múltiples / apilar notificaciones desde GCM
- Cómo especificar min y / o longitud máxima en RemoteInput
Lo que debe hacer es registrar un BroadcastReceiver
(probablemente en su AndroidManifest.xml o, alternativamente, utilizando registerReceiver
en un Service
) y, a continuación, defina deleteIntent
como un Intent
que será capturado por ese receptor.
Código de ejemplo que se llamará cada vez que el usuario borre la notificación, espero que le ayude.
.... notificationBuilder.setDeleteIntent(getDeleteIntent()); .... protected PendingIntent getDeleteIntent() { Intent intent = new Intent(mContext, NotificationBroadcastReceiver.class); intent.setAction("notification_cancelled"); return PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); }
NotificationBroadcastReceiver.java
@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals("notification_cancelled")) { // your code } }
AndroidManifiest.xml
<receiver android:name=".NotificationBroadcastReceiver"> <intent-filter> <action android:name="notification_cancelled"/> </intent-filter> </receiver>
Debería usar getBroadcast methode en lugar de getService y debería registrar receptor para Acción específica.
No se requiere un receptor explícito. DeleteIntent se llamará automáticamente mientras se pulsa el botón de borrado .