Il collegamento diretto non funziona se l'app è già stata aperta tramite link diretto.Il collegamento diretto Android non funziona se l'app viene aperta tramite il collegamento diretto già
Tuttavia, se apro l'app non attivando un deeplink, ad esempio facendo clic sull'icona dell'app per aprire l'app. Quindi attivare il deeplink in seguito funzionerebbe sempre.
Arrivano i dettagli:
Così ho la mia attività specificati in questo modo in AndroidManifest, vale a dire LaunchActivity.
<activity
android:name="some.package.name.LaunchActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.SomeTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="dlscheme" android:host="dlhost" />
</intent-filter>
</activity>
E in LaunchActivity, vorrei stampare un log in onCreate() per indicare che ci sono stato.
ho usato
adb shell am start -W -a android.intent.action.VIEW -d "dlscheme://dlhost/param" some.package.name
per testare il profondo legame.
Con l'app uccisa, ho utilizzato il comando precedente. Può aprire l'app e dirigersi verso l'attività corretta, nessun problema. E avere il seguente registro.
adb shell am start -W -a android.intent.action.VIEW -d "dlscheme://dlhost/param" some.package.name
Starting: Intent { act=android.intent.action.VIEW dat=dlscheme://dlhost/param pkg=some.package.name }
Status: ok
Activity: some.package.name/.activity.LaunchActivity
ThisTime: 898
TotalTime: 898
WaitTime: 919
Complete
Tuttavia, se inserisco nuovamente lo stesso comando, senza uccidere l'app. Aprirebbe solo l'app, ma non aprirà l'attività corretta e produrrà il seguente registro.
adb shell am start -W -a android.intent.action.VIEW -d "dlscheme://dlhost/param" some.package.name
Starting: Intent { act=android.intent.action.VIEW dat=dlscheme://dlhost/param pkg=some.package.name }
Warning: Activity not started, its current task has been brought to the front
Status: ok
Activity: some.package.name/.activity.LaunchActivity
ThisTime: 0
TotalTime: 0
WaitTime: 6
Complete
con questa linea aggiuntiva
Warning: Activity not started, its current task has been brought to the front
in realtà ho provato anche questo con un sito web, utilizzando questo intento cromo:
intent://dlhost/param#Intent;scheme=dlscheme;package=some.package.name;end
e sarebbe lo stesso comportamento.
Si vede il messaggio "Impostazione dell'ultima attività selezionata" in logcat? Stavo vedendo lo stesso comportamento, ma quel messaggio sembra indicare che questo comportamento è inteso. – Shane