Enlace profundo en una aplicación mientras la aplicación ya se está ejecutando en segundo plano
He implementado una DeeplinkActivity para capturar el esquema de datos de filtro de intenciones y abrir una actividad. El problema que tengo es que la aplicación ya está abierta en segundo plano y, a continuación, el usuario hace clic en un vínculo profundo para abrir la actividad de la pantalla de inicio. Si el usuario presiona de nuevo para salir de la aplicación que irá a lo que se estaba ejecutando en el fondo. Quería que acabara de salir de la aplicación.
He intentado esto.
- La vinculación profunda no abre una aplicación nueva
- Android - Valor de texto condicional utilizando Vinculación de datos
- Android deeplink por sabor
- Cómo realizar vinculación de datos de dos vías con un ToggleButton?
- Enlace profundo de Android: utiliza el mismo enlace para la aplicación y la tienda de reproducción
Intent intent = new Intent(this, LaunchActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
Pero esto no funciona. ¿Alguna sugerencia?
- ¿Cómo Deep Link en un fragmento en una aplicación para Android. ¿Es posible?
- Los vínculos profundos de Android no siguen el prefijo de ruta
- Android Databinding: "Referencias de métodos con '.' es obsoleto"
- Cómo iniciar una aplicación utilizando un deeplink en android
- Clase de enlace de datos no generada
- Error de enlace de datos: los valores antiguos deben ser seguidos por nuevos valores. El parámetro 2 debe ser del mismo tipo que el parámetro 3
- Excepción de ClassCast de Android al vincular al servicio
- Deeplink filtro de intención a un pathPrefix en particular?
Encontré esta pregunta casi 2 años de edad, mientras que enfrenta exactamente el mismo problema … Probablemente demasiado tarde, pero para cualquier otra persona con el mismo problema: Mi solución a esto es utilizar en lugar de contexto actual (actividad) el contexto de la aplicación. Así que la tercera línea se parece a: getApplicationContext().startActivity(intent);
En realidad hay dos maneras de manejar su problema:
android:launchMode="singleInstance"
establecer android:launchMode="singleInstance"
( referencia ) en el manifiesto de tu actividad, que se llama desde el enlace profundo. Por lo tanto, la actividad es siempre el único y único miembro de su tarea. Por lo tanto, la actividad no reutilizará ninguna tarea del backstack de la aplicación que ya se esté ejecutando. Tenga cuidado con singleInstance, si abre una actividad singleInstance con un vínculo profundo y luego navega de allí a otra actividad y presiona atrás, obtendrá la actividad principal de la actividad actual y no su actividad singleInstance. Por lo tanto, destruye de alguna manera la navegación de vuelta estándar y tienes que manejar todos estos casos especiales, que puede ser bastante molesto.
O bien, para API> = 16, puedes usar: finishAffinity()
( reference ) en tu método onBackPressed()
de tu actividad, pero aquí tienes que distinguir de alguna manera, si la aplicación se abrió a través de deep link, de lo contrario se va a cerrar Su aplicación, incluso cuando sólo desea volver a su menú principal.
- Hello-JNI para Android Studio
- Finish () no se cierra la actividad cuando se llama después de la primera ejecución