Cómo utilizar FLAG_ACTIVITY_SINGLE_TOP y varias tareas con PendingIntents

Estoy desarrollando una aplicación de chat de varias habitaciones para Android basada en SocketIO. Esta es mi primera aplicación para Android, así que tal vez estoy perdiendo algo tonto. La estructura de la aplicación es básicamente una actividad para la pantalla de inicio y una actividad que se conecta al servidor SocketIO y ofrece una interfaz de chat.

La aplicación proporciona un filtro de intenciones para abrir enlaces especiales para iniciar la aplicación de chat con el campo "sala" ya ocupado. Cuando abro uno de estos "enlaces especiales", la aplicación se inicia con una nueva tarea, por lo que puedo tener dos sesiones de chat funcionando al mismo tiempo.

Código de filtro de intenciones

<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="mychat.example.com" android:pathPrefix="/mychat/room/" /> </intent-filter> 

Todo funciona bien, aparte de las notificaciones: cada notificación tiene asociada PendingIntent para reanudar la sesión de chat si llegan nuevos mensajes. Para continuar, estoy usando Intent.FLAG_ACTIVITY_SINGLE_TOP. Este es el código para reanudar la aplicación.

 Intent intent = new Intent(getApplicationContext(), Room.class); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); mNotifyBuilder.setContentText(message.toString()).setNumber(++notificationMessages); Notification note = mNotifyBuilder.setContentIntent(pIntent).build(); note.flags |= Notification.FLAG_AUTO_CANCEL; mNotificationManager.notify(notificationID, note); 

Si utilizo la aplicación del lanzador todo funciona bien, pero con la tarea iniciada desde un filtro de intenciones hay un error con la notificación. Si recibo un mensaje en la tarea desde el filtro de intenciones y toco la notificación, la aplicación del iniciador se reanuda en lugar de la del filtro de intenciones.

¿Alguna pista?

¡Gracias!

  • AppWidget PendingIntent no funciona después de reiniciar el Lanzador
  • ¿Cómo puedo pasar correctamente los extras exclusivos a una intención pendiente?
  • Cómo quitar la notificación de la barra de notificación mediante programación en android?
  • Cómo detener AlarmManager
  • Acción de notificación con intención pendiente que no funciona en JellyBean +
  • ¿Cuándo usar IntentSender vs. PendingIntent?
  • ¿Cómo abrir la aplicación principal de la usable?
  • Android PendingIntent te lleva a una actividad ya existente?
  • ¿Cómo puedo enviar un SMS desde un BroadcastReceiver y comprobar su estado?
  • La notificación pasa Antiguo Intent Extras
  • La Notificación de Android reinicia la aplicación pero desea continuar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.