sistema - quitar notificacion sin servicio de datos android
Intento de notificación de Android para borrarlo (6)
Echa un vistazo a FLAG_AUTO_CANCEL
Se debe asignar bit a bitwise en el campo de banderas que se debe establecer si la notificación se debe cancelar cuando el usuario hace clic en ella.
EDITAR:
notification.flags |= Notification.FLAG_AUTO_CANCEL;
He leído muchos ejemplos de cómo crear mensajes de notificación. Lo que quería lograr es que la notificación sea ejecutada por un widget, me gustaría que la intención de la notificación al hacer clic se borre cuando el usuario hace clic en ella. No tengo una actividad a la que regresar. La notificación para mis propósitos simplemente notificará, nada más. Entonces, ¿cuál sería el código de un intento que simplemente se borra / cancela a sí mismo? El código a continuación es una actividad lanzada por un botón (código de botón no incluido) la notificación se activará mediante un servicio en segundo plano.
CharSequence title = "Hello";
CharSequence message = "Hello, Android!";
final NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
final Notification notification = new Notification(R.drawable.icon,"A New Message!",System.currentTimeMillis());
notification.defaults=Notification.FLAG_ONLY_ALERT_ONCE+Notification.FLAG_AUTO_CANCEL;
Intent notificationIntent = new Intent(this, AndroidNotifications.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,notificationIntent, 0);
notification.setLatestEventInfo(AndroidNotifications.this, title,message, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
Gracias
Establezca los indicadores en notification.flags en lugar de notification.defaults.
Ejemplo:
notification.flags |= Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
La única forma que puedo ver de hacer esto es hacer que el Punto de Intent
su Notification
un Service
segundo plano. Cuando se lanza este Servicio, borrará la Notification
dada usando NotificationManager.cancel(int id)
. El Service
entonces se detendría a sí mismo. No es bonito, y no sería fácil de implementar, pero no puedo encontrar ninguna otra forma de hacerlo.
Si está utilizando NotificationCompat.Builder
(una parte de android.support.v4
), simplemente llame al método de su objeto setAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Algunos tipos informaban que setAutoCancel()
no funcionaba para ellos, por lo que puedes probarlo también.
builder.build().flags |= Notification.FLAG_AUTO_CANCEL;
Usar setContentIntent debería resolver su problema:
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
Por ejemplo:
NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("title")
.setAutoCancel(true)
.setContentText("content")
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mBuilder.build());
A menudo, es posible que desee dirigir al usuario al contenido relevante y, por lo tanto, podría reemplazar "nuevo Intento ()" por otra cosa.
/**
Post a notification to be shown in the status bar.
Obs.: You must save this values somewhere or even pass it as an extra through Intent to use it later
*/
notificationManager.notify(NOTIFICATION_ID, notification);
/**
Cancel a previously shown notification given the notification id you''ve saved before
*/
notificationmanager.cancel(NOTIFICATION_ID);