Android PendingIntent te lleva a una actividad ya existente?

No estaba muy seguro de cómo buscar esto …

Tengo un el siguiente que se llama siempre que un trabajo es agregado o quitado de mi cola para poner una notificación en la barra de estado:

private void showNotification() { int jobsize = mJobQueue.size(); int icon = (jobsize == 0) ? android.R.drawable.stat_sys_upload_done : android.R.drawable.stat_sys_upload; Notification notification = new Notification(icon, "Test", System.currentTimeMillis()); Intent intent = new Intent(this, FileManagerActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.flags = (Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL); notification.setLatestEventInfo(this, "Uploading to our servers", getString((jobsize > 0) ? R.string.notification_active_transfers : R.string.notification_no_transfers), pendingIntent); mNotifyManager.notify(NOTIFICATION, notification); } 

Como es ahora el comportamiento es el siguiente:

  • Si el usuario se desconecta y recibe la notificación, seguirá abriendo una nueva FileManagerActivity (ops!) Que podría conseguir alrededor de esto comenzando en mi actividad de autenticación y pasar la intención de mi pila en un orden natural, es cuando la aplicación ya está Correr es donde tengo dificultades.

  • Si el usuario ya tiene el FileManagerActivity abrir haciendo clic en la notificación se pondrá una segunda instancia sobre él. En este caso, quiero que FileManagerActivity en ejecución reciba foco en lugar de iniciar una nueva instancia.

¿Cómo puedo obtener el comportamiento correcto?

He hecho esto antes estableciendo mi actividad para usar el modo de lanzamiento 'singleTop' en el Manifiesto de aplicación. Logrará la función deseada, utilizando la actividad existente si existe. En este caso, onNewIntent será llamado en su actividad.

Tendrá que comprobar su FileManagerActivity para la autenticación e iniciar una nueva actividad según corresponda si el usuario no ha iniciado sesión.

Creo que Trabajó cuando agregó estos:

Intent.setAction (Long.toString (System.currentTimeMillis ()));

PendingIntent.FLAG_UPDATE_CUR

 Intent intent = new Intent(context, MyOwnActivity.class); intent.putExtra("foo_bar_extra_key", "foo_bar_extra_value"); intent.setAction(Long.toString(System.currentTimeMillis())); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent,PendingIntent.FLAG_UPDATE_CURRENT); 
  • Notificación incorrecta enviada desde el paquete, no se pudo expandir RemoteViews
  • Notificación de notificación de vibración / tono de llamada
  • Android - java.lang.IllegalArgumentException: contentIntent error requerido por la notificación?
  • Android OnNewIntent no se llama
  • Cómo guardar notificaciones push de analizar por SharedPreferences
  • ¿Por qué los iconos establecidos con Notification.Builder.setSmallIcon en Android Lollipop muestran como un cuadrado blanco?
  • Azure push notificación hub - cómo manejar los formatos de carga útil para iOS y Android?
  • La notificación abre actividad, se pulsa el botón de retroceso, se abre la actividad principal?
  • Cómo recuperar llamadas perdidas en Android SDK 2.2
  • Notificación de cancelación automática no funciona para Android Lollipop
  • Notificación de muestra de Android de BroadcastReceiver
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.