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.
- ¿Qué sucede con las alarmas establecidas a través del administrador de alarmas de una aplicación, si la aplicación se desinstala
- La Notificación de Android reinicia la aplicación pero desea continuar
- ¿Cómo enviar datos a través de PendingIntent a Broadcast?
- ¿Cómo abrir la aplicación principal de la usable?
- AlarmManager cuando el teléfono está apagado - ANDROID
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 obtener y cancelar una PendingIntent?
- Intento pendiente con el indicador ONE_SHOT
- Eliminar los datos de la intención de notificación
- Android - ¿Qué es un PendingIntent?
- ¿Puede un receptor de difusión captar múltiples transmisiones?
- Android: pasar el objeto del widget de recopilación a la actividad
- ¿Es posible crear múltiples PendingIntents con el mismo requestCode y diferentes extras?
- Enumeración usb Android
- Cómo corregir el error No se puede ejecutar dex: Varios archivos dex definen Lcom / google / android / gcm / GCMBaseIntentService ;?
- Obtención de correo electrónico del cliente de suscripción de Android en la compra en la aplicación