6

I'm using Jetpack Navigation for deeplinks. I've added android:launchMode="singleTask" to my Activity. Deeplink is redirected correctly if the app wasn't opened before. However, if the app exists in memory, the app is coming to the foreground but deeplink isn't opened correctly.

My device is Pixel 2 with Android 10. I see that onCreate is called only the first time I'm opening app. However, onNewIntent is called every time I'm clicking deeplink.

Is it a bug in Jetpack Navigation or I forgot about something when setting it up?

jakub
  • 3,576
  • 3
  • 29
  • 55

1 Answers1

8

As per the handleDeepLink() documentation:

This is called automatically for you the first time you set the graph if you've passed in an Activity as the context when constructing this NavController, but should be manually called if your Activity receives new Intents in Activity.onNewIntent(Intent).

NavController doesn't override methods in your activity, so you'd need to call this manually if you insist on using android:launchMode="singleTask".

As per the Single Activity talk, you shouldn't use any launchMode flags at all - the default is actually what you want 99.9% of the time.

ianhanniballake
  • 191,609
  • 30
  • 470
  • 443
  • 1
    Thanks Ian, I'm using Branch SDK and `singleTask` is required by this 3rd party. My pattern to handle deeplinks I posted here https://stackoverflow.com/questions/61481816/jetpack-navigation-handling-deeplinks-manually-in-onnewintent it's not the most beautiful, but seems to work. Cheers – jakub May 15 '20 at 08:56