es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Android. El enlace profundo no funciona con el modo de lanzamiento estándar.

Tengo la actividad principal (actividad de lanzamiento) con el modo de lanzamiento “singleTask” (por ejemplo, A). Necesito este modo de lanzamiento para manejar enlaces profundos. Pero cuando voy desde mi actividad principal a otra actividad B y presiono el botón de inicio, al abrir mi aplicación se muestra la actividad A en lugar de B. ¿Cómo puedo solucionar este problema? Con el modo de lanzamiento estándar, la pila de actividades se conserva, pero el enlace profundo no funciona.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una solución a este problema es utilizar la clase TaskStackBuilder para crear una nueva tarea para el enlace profundo en lugar de depender del comportamiento de tarea predeterminado.

    Para implementar esta solución, puedes hacer lo siguiente:

    1. En la actividad B, define el filtro de intent de enlace profundo en el manifiesto, especificando el modo de lanzamiento como estándar.
    <intent-filter>
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.DEFAULT"></category>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <data android:scheme="myapp" android:host="example.com"></data>
    </intent-filter>
    
    1. En la actividad A, al manejar el intent de enlace profundo, utiliza TaskStackBuilder para crear una nueva tarea que inicie la actividad B.
    Intent intent = getIntent();
    if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) {
        Uri uri = intent.getData();
        if (uri != null) {
            TaskStackBuilder.create(this)
                .addNextIntentWithParentStack(new Intent(this, B.class))
                .startActivities();
            finish(); // Finaliza la actividad A para que no esté en la pila de actividades
        }
    }
    

    Este enfoque preserva la pila de actividades desde la perspectiva del usuario, pero inicia una nueva tarea para el enlace profundo. Esto asegura que cuando la aplicación se inicie desde el enlace profundo, se abra la actividad B en lugar de la actividad A.

Comments are closed.