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>
In the context of mobile apps, deep linking consists of using a uniform resource identifier (URI) that links to a specific location within a mobile app rather than simply launching the app. Deferred deep linking allows users to deep link to content even if the app is not already installed.
In Android, a deep link is a link that takes you directly to a specific destination within an app. The Navigation component lets you create two different types of deep links: explicit and implicit.
Adjust Deeplink Generator To use the tool, log in to your Adjust dashboard and open the Menu, where you'll see the 'Deeplink Generator' as an option. Click to open, and you'll find a page to input the information required to create your deep link. Then simply copy and paste into whichever campaign you've set up.
In Android, a deep link is a link that takes you directly to a specific destination within an app. The Navigation component lets you create two different types of deep links: explicit and implicit. An explicit deep link is a single instance of a deep link that uses a PendingIntent to take users to a specific location within your app.
The Navigation component lets you create two different types of deep links: explicit and implicit. An explicit deep link is a single instance of a deep link that uses a PendingIntent to take users to a specific location within your app. You might surface an explicit deep link as part of a notification or an app widget, for example.
val componentName = ... If you have an existing NavController , you can also create a deep link by using NavController.createDeepLink (). An implicit deep link refers to a specific destination in an app. When the deep link is invoked—for example, when a user clicks a link—Android can then open your app to the corresponding destination.
The “continue editing” action uses an “explicit” deep link. Explicit is what we call a link that takes you to dynamic content inside your application. Let’s start with an implicit deep link to add a new donut.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With