Una alternativa a la deleteIntent
es la continuación de lo cual ha demostrado ser beneficiosa en mi propia aplicación:
Básicamente, crea un intento con su notificación que inicia un IntentService (o cualquier otro servicio) y en onHandleIntent
puede establecer una bandera que indica si la notificación está activa.
Puede configurar esta intención para que se active cuando el usuario toque la notificación (contentIntent) y/o cuando el usuario la borre de la lista (deleteIntent).
Para ilustrarlo, esto es lo que hago en mi propia aplicación. Cuando la construcción de la notificación puse
Intent intent = new Intent(this, CleanupIntentService.class);
Notification n = NotificationCompat.Builder(context).setContentIntent(
PendingIntent.getActivity(this, 0, intent, 0)).build();
Cuando se toca la notificación, mi CleanupIntentService
se pone en marcha, el establecimiento de una bandera (en el servicio que creó la notificación):
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onCreate(); // If removed, onHandleIntent is not called
return super.onStartCommand(intent, flags, startId);
}
@Override
protected void onHandleIntent(Intent intent) {
OtherService.setNotificationFlag(false);
}
tiene que haber algo que está mal. cuando escribo en mi método '' 'onResume()' '' que '' 'if (isNotificationVisible())' '' mi notificación debe cancelarse con: '' '((NotificationManager) getSystemService (NOTIFICATION_SERVICE)) cancel (MY_ID); '' 'y después de eso' '' finish(); startActivity (getIntent()); '' 'Recibo un bucle que me lleva a reiniciar mi teléfono. por lo que este método debe tratarse con precaución ... – maysi
No funciona para mí. Esto siempre vuelve verdadero para mí. – Saket
No funcionó para mí en Android 4.3. El 'PendingIntent' se mantuvo después de descartar la notificación, e incluso después de matar toda la aplicación. Solo al reiniciar el teléfono se deshizo de él. Además, 'setLatestEventInfo()' ya no parece existir, así que acabo de usar 'setContentIntent()' en su lugar. – Sam