una para open ninguna navegador links link from enlaces encontro desde con app aplicacion abrir android android-manifest adb deep-linking

open - Estoy intentando probar las URL de enlace profundo de Android a través de adb para iniciar mi aplicación



link para abrir una app (4)

Como mencionó la otra respuesta, debe ser "example: // gizmos" y no "example: gizmos"

Alternativamente, en lugar de usar adb, puede probar enlaces profundos directamente en Android usando la aplicación de prueba de enlaces profundos:

https://play.google.com/store/apps/details?id=com.manoj.dlt

No es necesario mencionar ningún nombre de paquete o nombre de componente. Solo escribe el enlace profundo y dispara.

He encontrado que las pruebas de enlaces profundos a través de adb son complicadas y difíciles a veces. Por lo tanto, he construido esta pequeña aplicación para hacerlo.

Cuando escribo el comando en adb:

./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp

Me sale este error:

Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos pkg=com.myapp } Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=example://gizmos flg=0x10000000 pkg=com.myapp }

Pero cuando escribo el comando en adb:

./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp.activity.DeepLinkActivity

Todo funciona bien y recibo el mensaje y puedo ver el inicio de la actividad en el teléfono:

Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos cmp=com.myapp.activity.DeepLinkActivity } Status: timeout Activity: com.myapp.activity.DrawerActivity Complete

Mi pregunta es ¿por qué necesito obtener la ruta completa de mi actividad y no solo el nombre del paquete? Porque cuando las aplicaciones externas o el navegador intenten enlazar en profundidad, no invocarán la actividad en mi aplicación.

Este es mi AndroidManifest.xml

<activity android:name=".activity.DeepLinkActivity"> <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="example" android:host="gizmos" /> </intent-filter> </activity>



No es necesario que especifique la ruta completa de su actividad, pero si desea probar si reacciona correctamente al URI en su aplicación, simplemente especifique el paquete de la aplicación:

adb shell am start -a android.intent.action.VIEW -d "example://gizmos" com.myapp

También hay un error en el comando que proporcionó, debería haber un example://gizmos no un example:gizmos


Su comando es incorrecto porque está intentando con un nombre de paquete incorrecto. En lugar de com.myapp.activity.DeepLinkActivity , debe escribir solo el nombre del paquete especificado en build gradle (Module: app) por ''Id. De aplicación'', por ejemplo, si su ID de aplicación es com.companyname , entonces su comando sería así:

adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.companyname