Quando digito il comando in adb:Sto cercando di testare Android gli URL dei link diretti attraverso adb per lanciare la mia app
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp
ottengo questo errore:
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 }
Ma quando si digita il comando adb:
./adb shell am start -W -a android.intent.action.VIEW -d "example:gizmos" com.myapp.activity.DeepLinkActivity
Tutto funziona bene e ottengo il messaggio e posso vedere il lancio di attività sul telefono:
Starting: Intent { act=android.intent.action.VIEW dat=example://gizmos cmp=com.myapp.activity.DeepLinkActivity }
Status: timeout
Activity: com.myapp.activity.DrawerActivity
Complete
La mia domanda è: perché devo seguire il percorso completo della mia attività e non solo il nome del pacchetto? Perché quando le app esterne o il browser proveranno a collegarsi in profondità non invocheranno l'attività nella mia app.
Questo è il mio 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>