Reputation: 302
I hope you are all doing well.
I have a little question;
I am using navigation component, single activity multiple fragment. I have a tiny problem with deeplink.
I’ve set <nav-graph/>
in manifest and also set launcherMode="singleTask",
I’ve set <deeplink/>
in navigation graph.
I’ve handled intent extras in fragment.
My flow is;
The problem is; Sometimes if app is open on background, (for example I requested mail then pressed home button) and when I click deeplink, last fragment runs instead of destination fragment which is CreatePasswordFragment Any ideas about what may cause the problem?
Thanks!
Navigation version: 2.2.0
Deeplink that comes with email
http://myurl/forgot-password/?key=sodmoq9wwdW1djkssdqMEdqlsp
Navigation graph
<deepLink android:id="@+id/deepLink"
app:uri="http://myurl/forgot-password/?key={key}"/>
<argument
android:name="key"
app:argType="string" />
Android Manifest
<activity
...
android:launchMode="singleTask">
<nav-graph android:value="@navigation/navigation_main" />
</activity>`
Decompiled Manifest
<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="http" />
<data android:host="myurl" />
<data android:path="/forgot-password/" />
</intent-filter>
Upvotes: 17
Views: 11029
Reputation: 767
Little late to the party, but for future references quoting from Ian Lake's (tech lead of the navigation component) answer:
NavController doesn't override methods in your activity, so you'd need to call this manually if you insist on using android:launchMode="singleTask".
And here is the link to the source:
https://stackoverflow.com/a/61569940/4408458
Upvotes: 2