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!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.