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!

  • ¿Cómo actualizar vista de un widget en el botón de clic en android?
  • Intención con el extra antiguo en onCreate () para singleTask Actividad
  • ¿Cuándo usar IntentSender vs. PendingIntent?
  • API de ubicación de Google: solicita actualizaciones de ubicación con intención pendiente?
  • Intento pendiente con intención diferente pero id. Mismo
  • ¿Cómo puede detectar si su actividad está siendo onPaused debido a un PendingIntent que creó?
  • GetIntent () en onResume () siempre devuelve la misma acción, ¿cómo consumirla?
  • New PendingIntent actualiza la intención actual
  • Android AlarmManager problema con la configuración y restablecimiento de una alarma
  • Android Widget deja de funcionar aleatoriamente
  • Obtener la lista de PendingIntents activa en AlarmManager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.