Notificación personalizada de cancelación automática mediante RemoteView

He creado una notificación de diseño personalizado mediante remoteview. Problema que estoy enfrentando es, Cómo autoCancelar la notificación una vez que el usuario la toca. He intentado pocas cosas, pero ninguna es dar resultado deseado.

Encuentre el código a continuación:

RemoteViews remoteView = new RemoteViews(this.getPackageName(), R.layout.notification_layout); NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); builder.setSmallIcon(R.drawable.ic_launcher); Intent intent = new Intent(MainActivity.this, SecondActivity.class); PendingIntent pIntent = PendingIntent.getActivity(MainActivity.this, RQST_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT); remoteView.setOnClickPendingIntent(R.id.btnNotification, pIntent); builder.setAutoCancel(true); builder.setContent(remoteView); Notification notify = builder.build(); notify.flags |= Notification.FLAG_AUTO_CANCEL; NotificationManager notiManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notiManager.notify(NOTY_ID, notify); 

2 Solutions collect form web for “Notificación personalizada de cancelación automática mediante RemoteView”

La forma en que logré esto es mediante la creación de BroadcastReceiver que controla los clics de botón de la Notification . Crea algo como esto:

 public class NotificationButtonListener extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int action = intent.getIntExtra("mode", -1); switch (action) { // do some things depending on action if there are more stuff to do } } } 

No olvide añadir su BroadcastListener a su archivo de manifiesto:

 <receiver android:name=".NotificationButtonListener"> 

Y puede crear una clase auxiliar para crear y cancelar la notificación:

 public class NotificationHelper { private static final int NOTIFICATION_ID = 5; private static NotificationManager mNotificationManager = null; public static void showNotification(Context context) { mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout); contentView.setOnClickPendingIntent(R.id.btn_close, closePendingIntent); Intent mMainIntent = new Intent(context, MainActivity.class); mMainIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent mMainPendingIntent = PendingIntent.getActivity(context, 555, mMainIntent, PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setTicker("Playing") .setContent(contentView) .setAutoCancel(false) .setOngoing(true) .setSmallIcon(R.drawable.ic_av_play) .setContentIntent(mMainPendingIntent); Notification notification = mBuilder.build(); mNotificationManager.notify(NOTIFICATION_ID, notification); } public static void cancelNotification() { if (mNotificationManager != null) { mNotificationManager.cancelAll(); } } } 

Y usando esa clase en su NotificationButtonListener puede llamar a NotificationHelper.cancelNotification(); .

¡Espero que esto te ayude!

Para otros que tienen un diseño personalizado y quieren cancelación automática para trabajar, Si pulsa en cualquier parte de la notificación está bien, entonces no utilice remoteView.setOnClickPendingIntent . Porque cualquier vista con OnClick Listener anula la notificación OnClick Listener principal.

Use setContentIntent en su lugar.

 NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setContentTitle("title); builder.setContentText("contect); builder.setSmallIcon(@smallicon); builder.setWhen(@when); builder.setContent(remoteViews); builder.setContentIntent(onClickPendingIntent); // use this builder.setAutoCancel(true); 
  • ¿Posibles razones para que el dispositivo Android no reciba las notificaciones de juegos de Google?
  • Cómo cancelar la notificación de inesperado / forzar la terminación de la aplicación
  • La aplicación se reinicia si selecciona la aplicación de las aplicaciones recientes sólo cuando se inicia la actividad desde Notification
  • Notificaciones de nido de abeja - ¿Cómo configurar largeIcon en el tamaño correcto?
  • Android, Mostrar alertaDialog en lugar de notificación cuando la aplicación está abierta
  • Cómo poner un oyente onclick dentro de un servicio
  • Cómo cerrar la notificación después de hacer clic en la acción
  • "@android: style / TextAppearance.StatusBar.EventContent.Title" establece el color en blanco en lugar de gris en android L
  • Notificación de Android Acción que no llama a la intención pendiente de servicio
  • Cómo abrir la página de fragmentos, cuando se presiona una notificación en android
  • Notificación de Android no se rechaza al hacer clic / deslizar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.