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.

Parámetro de enlace profundo en Flutter

Necesito abrir un enlace profundo en mi aplicación de Android, como “uniqueName://post/detail/1” en el enrutador pero siempre elimina la primera parte del enlace (post) y delega solo el resto: “/detail/1” en lugar de “/post/detail/1”

AndroidManifest.xml:

<intent-filter android:priority="1">
    <action android:name="android.intent.action.VIEW"></action>
    <category android:name="android.intent.category.BROWSABLE"></category>
    <category android:name="android.intent.category.DEFAULT"></category>
    <data android:scheme="uniqueName/"></data>
</intent-filter>

onGenerateRoute:

Route? onGenerateRoute(RouteSettings settings) {
    print('Cambiar ruta principal a: ${settings.name}'); // imprime /detail/1
}

Prueba:

adb shell am start -a android.intent.action.VIEW 
                   -c android.intent.category.BROWSABLE
                   -d "uniqueName://post/detail/1"
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para abrir un enlace profundo en una aplicación de Android y evitar la eliminación de la primera parte del enlace, puedes realizar las siguientes modificaciones:

    AndroidManifest.xml:

    <intent-filter android:priority="1">
        <action android:name="android.intent.action.VIEW"></action>
        <category android:name="android.intent.category.BROWSABLE"></category>
        <category android:name="android.intent.category.DEFAULT"></category>
        <data android:scheme="uniqueName" android:host="*" android:pathprefix="/post/*"></data>
    </intent-filter>
    

    onGenerateRoute:

    Route? onGenerateRoute(RouteSettings settings) {
        print('Cambiar ruta principal a: ${settings.name}'); // imprime /post/detail/1
    }
    

    Ten en cuenta que la modificación realizada en AndroidManifest.xml incluye agregar el atributo android:host y cambiar android:pathPrefix a /post/*, lo que permite capturar el enlace profundo completo. Además, el método onGenerateRoute ahora debe imprimir correctamente /post/detail/1 en lugar de simplemente /detail/1. Por último, el comando de prueba debe permanecer igual.

Comments are closed.