【问题标题】:Deeplink isn't correctly redirect if the app is already opened如果应用程序已打开,则深层链接不会正确重定向
【发布时间】:2020-04-28 12:57:10
【问题描述】:

我正在使用 Jetpack Navigation 进行深度链接。我已将android:launchMode="singleTask" 添加到我的活动中。 如果之前未打开应用程序,则会正确重定向深层链接。但是,如果应用程序存在于内存中,应用程序将进入前台,但深度链接未正确打开。

我的设备是搭载 Android 10 的 Pixel 2。 我看到 onCreate 仅在我第一次打开应用程序时被调用。但是,每次我单击深度链接时都会调用onNewIntent

这是 Jetpack Navigation 中的错误还是我在设置时忘记了某些内容?

【问题讨论】:

  • 看起来很正常。当 Activity 已经创建了它的 onNewIntent 方法时,这个过程就会调用它。你应该把你的逻辑放在 onNewIntent 方法中。
  • 这是单任务启动模式的预期行为。
  • 但是为什么 Jetpack Navigation 默认不处理呢?

标签: android android-jetpack-navigation android-deep-link


【解决方案1】:

根据handleDeepLink() documentation

如果您在构造此 NavController 时传入了 Activity 作为上下文,则在您第一次设置图形时会自动调用此函数,但如果您的 Activity 在 @ 中接收到新 Intent,则应手动调用987654326@.

NavController 不会覆盖您的活动中的方法,因此如果您坚持使用android:launchMode="singleTask",则需要手动调用它。

根据 Single Activity talk,您根本不应该使用任何 launchMode 标志 - 默认值实际上是您 99.9% 的时间想要的。

【讨论】:

  • 感谢 Ian,我正在使用 Branch SDK,并且此第 3 方需要 singleTask。我在这里发布的处理深度链接的模式stackoverflow.com/questions/61481816/… 这不是最漂亮的,但似乎有效。干杯
猜你喜欢
  • 2021-09-01
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 2021-01-26
  • 1970-01-01
  • 2019-08-24
相关资源
最近更新 更多