J'essaie de tester les URL de liens profonds Android via adb pour lancer mon application
Quand je tape la commande dans la bad:
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp
J'obtiens cette erreur:
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 }
Mais quand je tape la commande dans la bad:
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp.activity.DeepLinkActivity
Tout fonctionne bien et j'obtiens le message et je peux voir l'activité de lancement sur le téléphone:
Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos cmp=com.myapp.activity.DeepLinkActivity }
Status: timeout
Activity: com.myapp.activity.DrawerActivity
Complete
Ma question est pourquoi n'ai-je besoin pour obtenir le chemin complet de mon activité, et pas seulement nom du package? Parce que lorsque les applications ou le navigateur va essayer de lien profond qu'ils ne seront pas invoquer l'activité de mon application.
C'est mon 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>
source d'informationauteur user3773337
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de spécifier le chemin d'accès complet à votre activité, mais si vous voulez tester si vous réagir correctement à l'URI dans votre application il suffit de spécifier le package d'application:
Il y a aussi un bug dans la commande que vous avez fournie - il devrait y avoir
example://gizmos
pasexample:gizmos
La meilleure solution pour android studio est expliqué ici: https://code.tutsplus.com/tutorials/how-to-enable-deep-links-on-android--cms-26317
TLDR : Android Studio --> Exécuter --> Modifier les Configurations
Changement Lancer dans les Options de Lancement "URL", puis saisissez dans le champ de texte URL, l'url est correcte: "quelque chose d'://"
Que l'autre réponse mentionné, il doit être "exemple://gadgets" et non pas "exemple:gadgets"
Alternativement, au lieu de l'aide de la bad, vous pouvez tester la profondeur des liens directement sur votre android à l'aide du lien profond testeur d'application:
https://play.google.com/store/apps/details?id=com.manoj.dlt
Pas nécessaire de mentionner aucun nom de paquet ou le nom de composant. Il suffit de taper le lien profond et le feu.
J'ai trouvé de test de profondeur des liens par l'intermédiaire de la bad à cubersome et difficile à la fois. Donc, j'ai construit cette petite application pour le faire.
Votre commande est incorrecte parce que vous êtes en train d'essayer avec un mauvais paquet nom, au Lieu de
com.myapp.activity.DeepLinkActivity
vous avez à écrire le nom du package spécifié dans le build gradle(Module: app) par "Id de l'application" e.g si votre identificateur applicationid estcom.companyname
puis votre commande devrait ressembler à ceci: