Determinar si la Actividad es llamada por una Notificación

Estoy usando una Actividad con varias pestañas . Desde una parte diferente de la aplicación, las notificaciones se crean para decirle al usuario que algo ha cambiado. Ahora he conseguido llamar a la actividad , cuando el usuario hace clic en la notificación . Pero, ¿cómo puedo determinar si una Actividad se crea de la manera "normal" durante el tiempo de ejecución o haciendo clic en la notificación?

(Dependiendo de la notificación que haya hecho clic, quiero pasar a otra pestaña en lugar de mostrar la pestaña principal.)

Intent intent = new Intent(ctx, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 0, intent, 0); // TODO: Replace with .Build() for api >= 16 Notification noti = new Notification.Builder(ctx) .setContentTitle("Notification" .setContentText(this.getName()) .setSmallIcon(R.drawable.icon) .setContentIntent(pendingIntent) .setDefaults( Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS) .setAutoCancel(true) .getNotification(); NotificationManager notificationManager = (NotificationManager) ctx .getSystemService(Context.NOTIFICATION_SERVICE); // Hide the notification after its selected notificationManager.notify(this.getId(), noti); 

Esto con éxito llama a mi MainActivity. ¿Pero hay algún método que se llama cuando la Actividad es activada por el objeto pendingIntent ?

Pensado para definir algo como esto en la actividad principal :

 onTriggeredByNotification(Notification noti){ //determinte tab, depending on Notification. } 

Pase un valor booleano de la notificación y compruebe lo mismo en el método onCreate de la actividad.

  Intent intent = new Intent(ctx, MainActivity.class); intent.putExtra("fromNotification", true); 

 if (getIntent().getExtras() != null) { Bundle b = getIntent().getExtras(); boolean cameFromNotification = b.getBoolean("fromNotification"); } 

Puede probar esto en su Notificación

 Intent intent=new Intent(); intent.setAction("Activity1"); 

En el método onNewIntent() la actividad y obtenga acción para que pueda determinar si la actividad se llama o no.

Mejor que usar el campo de acción reservado de su intención como lo especifica @ricintech, podría usar un parámetro extra en su intento pendiente y detectarlo en su método onCreate y en su método onNewIntent dentro de su actividad.

  • Aplicación de chat que utiliza Firebase: Recibe notificación cuando recibe un nuevo mensaje - Android
  • Android: administrar múltiples notificaciones push en el dispositivo de una aplicación
  • Eliminar notificación de la barra de notificación de otras aplicaciones
  • ¿Cómo expandir la notificación de InboxStyle con sólo una línea añadida?
  • Notificación setLights () Valor predeterminado?
  • Cómo mostrar un mensaje de barra superior en Android
  • ¿Cómo iniciar la actividad cuando el usuario hace clic en una notificación?
  • Notificación para el reproductor de música android
  • Servicio de descarga de Android personalizado: proporciona una fila de notificación de progreso por archivo
  • Evitar la cancelación de la notificación al eliminar la aplicación de la lista de aplicaciones recientes
  • Cómo quitar la notificación de la barra de notificación mediante programación en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.