Eliminación de la notificación después de hacer clic
Acabo de empezar a trabajar con las notificaciones y ahora estoy tratando de eliminar la notificación y lanzar la aplicación una vez que la notificación ha sido aprovechado en el centro de notificación.
He intentado trabajar con el código siguiente:
import android.app.NotificationManager; public class ExpandNotification { private int NOTIFICATION = 546; private NotificationManager mNM; public void onCreate() { mNM.cancel(NOTIFICATION); setContentView(R.layout.activity_on); //Toast.makeText(this, "stopped service", Toast.LENGTH_SHORT).show(); }
Creo que este código ejecuta la otra clase cuando se hace tapping?
PendingIntent contentIntent = PendingIntent.getActivity(this, REQUEST_CODE, new Intent(this, ExpandNotification.class), 0);
Sin embargo, la notificación no desaparece, ni se inicia la aplicación. Pero soy capaz de deslizarlo a izquierda o derecha para eliminarlo, pero eso no es lo que quiero ..
Utilice el indicador Notification.FLAG_AUTO_CANCEL
Notification notification = new Notification(icon, tickerText, when); notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent); // Cancel the notification after its selected notification.flags |= Notification.FLAG_AUTO_CANCEL;
Y para iniciar la aplicación:
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // Create a new intent which will be fired if you click on the notification Intent intent = new Intent(context, App.class); // Attach the intent to a pending intent PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Si ayuda a alguien: Para obtener el mismo efecto utilizando Notification.Builder
o NotificationCompat.Builder
llame a setAutoCancel(true)
en la instancia de Builder.
Esta respuesta es demasiado tarde pero especialmente escribo la siguiente solución porque el constructor de notificaciones se vuelve obsoleto para utilizar la notificación mediante el constructor, como a continuación:
**.setAutoCancel(true)** is used to remove notification on click
Y la notificación entera es como follwoing:
private void makeNotification(String title,String msg){ Intent resultIntent = new Intent(this, MasterActivity.class); PendingIntent resultPendingIntent = PendingIntent.getActivity( this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT ); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setContentIntent(resultPendingIntent) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle(title) .setAutoCancel(true) .setContentText(msg); int mNotificationId = 001; NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); mNotifyMgr.notify(mNotificationId, mBuilder.build()); }
Llamando a este método con el título y el mensaje que recibe notificación perfecta.
La manera mejor y simple se establece builder.setAutoCancel(true)
es cancelar su notificación después de hacer clic en la notificación. Espero que este código le ayude.
Generador para la notificación
NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.btn_star); builder.setContentTitle("This is title of notification"); builder.setContentText("This is a notification Text"); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
Para abrir una actividad al hacer clic en la notificación
Intent intent = new Intent(Broadcastdemo.this, ThreadDemo.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 113,intent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent); builder.setAutoCancel(true);
Mostrar bulder en la notificación
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); manager.notify(114, builder.build());
Código completo para mostrar una notificación con icono, imagen, título, descripción, cancelación automática y haga clic en abrir una actividad
public void ShowIntentNotification(View v) { NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setSmallIcon(android.R.drawable.btn_star); builder.setContentTitle("This is title of notification"); builder.setContentText("This is a notification Text"); builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); Intent intent = new Intent(Broadcastdemo.this, ThreadDemo.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 113,intent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent); builder.setAutoCancel(true); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); manager.notify(114, builder.build()); }