Cómo determinar si la aplicación de Android se abre desde el mensaje de notificación?

En general, cuando tengo mensaje de notificación en la barra de notificación y haga clic en él. Abre la aplicación registrada para ese mensaje.

En la actividad de inicio, ¿Cómo determinar si la aplicación está abierta desde ella?

Y más mejor es ¿Cómo recuperar la identificación de la notificación en el método OnCreate ()?

Actualización : desde @Ovidiu – aquí está mi código de putExtra para empujar

Notification notification = new Notification(icon, tickerText, System.currentTimeMillis()); notification.contentView = contentView; Intent notificationIntent = new Intent(this, Startup.class); notificationIntent.putExtra("JOBID", jobId); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); notification.flags = Notification.FLAG_AUTO_CANCEL; notification.contentIntent = contentIntent; mNotificationManager.notify(jobId, notification); 

Y en la actividad principal "Startup.java" el código es

  Intent intent = this.getIntent(); if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID")) { int jobID = this.getIntent().getExtras().getInt("JOBID"); if (jobID > 0) { } } 

Intent.getExtras () devuelve siempre null. Resulta que necesito pasar PendingIntent.FLAG_ONE_SHOT. ¡Ahora es pasado adelante !!

Necesitas usar putExtra(ID_KEY,id) cuando crees tu Intent para iniciar tu aplicación, y en tu método onCreate() puedes usar getIntent().getExtras().getInt(ID_KEY); Para recuperar su integer identificación pasado.

El código Start Activity sería así, de lo contrario, una vez que se reciba de la notificación de GCM, desde entonces cada vez que la Activity venga de la lista Recent, se dirá que viene de la notificación de GCM, lo cual es incorrecto.

 Intent intent = this.getIntent(); if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID") && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { int jobID = this.getIntent().getExtras().getInt("JOBID"); if (jobID > 0) { } } 

Tuve el mismo problema, y ​​no entiendo por qué tengo que usar el método putExtra … Así que resolví así: cuando reciba una notificación y toque en ella, la aplicación se abrirá (normalmente se abre la actividad principal de la aplicación ) Y, en los extras, puede encontrar alguna información sobre esa notificación. Puede agregar parámetros de clave / valor a las notificaciones que está enviando a los dispositivos registrados. Estos parámetros se agregarán a los extras de intención.

Así que puedes actuar así: en tu notificación, agrega un parámetro que representa tu ID de notificación. Para esample "messageId" -> "abc", donde abc es su identificador de notificación.

Entonces, en su actividad principal, usted puede hacer:

 if (getIntent().getExtras().keySet().contains("messageId")) { // you opened the app from a notification String messageId = getIntent().getStringExtra("messageId") // do domething... } else { // you opened the app normally // do domething... } 

Y recuperará el id de la notificación. Por lo tanto, puede utilizar esta información para, por ejemplo, obtener la notificación de su db u otras operaciones.

  • URL de Firebase de Google Cloud Function Node.js
  • ¿Hay alguna forma de notificaciones push en libGDX (proyectos Android e iOS)?
  • Pasos básicos para usar MQTT en android
  • El LED de notificación de Firebase parpadea
  • Parse Push JSON problema de datos en Android
  • GCM da un mensaje nulo
  • ¿Es posible usar GCM para enviar notificaciones push entre diferentes aplicaciones?
  • Notificación de emisión del receptor de difusión
  • Cómo reiniciar / actualizar el contenido de la actividad en la notificación haga clic
  • Notificación de Android Push (lento)
  • Phonegap: cómo reproducir sonido en android para una notificación push
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.