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.

  • Push notificación de UrbanAirship no funciona con servidor en vivo (es decir, con la clave de producción) en android
  • Cómo anular onPushReceive () de ParsePushBroadcastReceiver?
  • PhoneGap Build Notificación de empuje (Android)
  • Mensaje GCM de Android enviado correctamente pero no recibido
  • Cómo verificar el ID del remitente de GCM de deviceToken en Parse.com
  • Android GCM: forma diferente de gestionar el envío dependiendo de si la aplicación es visible o no
  • ¿Es posible enviar la Notificación Push desde Java Server Side 3 mes automáticamente entre la fecha de inicio y la fecha de finalización para cada usuario diferente?
  • Cómo almacenar únicamente un ID de registro de GCM en MySQL
  • Push to talk con Android
  • ¿Cómo podemos obtener un dispositivo de token para Android para notificación push?
  • ¿Qué puerto y protocolo utiliza Google Cloud Messaging (GCM)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.