带有导航组件的 Android 深层链接无法按预期工作

Mit*_*arı 13 android android-architecture-navigation android-deep-link

我希望你们都做得很好。

我有一个小问题;

我正在使用导航组件,单个活动多个片段。我对深层链接有一个小问题。

  • 我已经<nav-graph/>在清单中设置了并且还设置了 launcherMode="singleTask",

  • 我已经<deeplink/>在导航图中设置了。

  • 我已经在片段中处理了意图附加内容。

我的流程是;

  1. 用户点击忘记密码,填写编辑文本,然后请求深层链接邮件。工作正常
  2. 用户单击电子邮件中的深层链接并选择应用程序,然后自动导航到 CreatePasswordFragment(深层链接目标片段)&(我可以在此处处理参数,也可以正常工作)

问题是; 有时如果应用程序在后台打开(例如我请求邮件然后按下主页按钮)并且当我单击深层链接时,最后一个片段运行而不是目标片段,即 CreatePasswordFragment 关于可能导致问题的任何想法?

谢谢!

导航版本:2.2.0

电子邮件附带的深层链接

 http://myurl/forgot-password/?key=sodmoq9wwdW1djkssdqMEdqlsp
Run Code Online (Sandbox Code Playgroud)

导航图

 <deepLink android:id="@+id/deepLink"
    app:uri="http://myurl/forgot-password/?key={key}"/>
 <argument
    android:name="key"
    app:argType="string" />
Run Code Online (Sandbox Code Playgroud)

安卓清单

 <activity 
    ...
    android:launchMode="singleTask">
 <nav-graph android:value="@navigation/navigation_main" />
 </activity>`
Run Code Online (Sandbox Code Playgroud)

反编译清单

 <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>
Run Code Online (Sandbox Code Playgroud)

Jas*_*son 2

有点晚了,但为了将来的参考,引用了 Ian Lake(导航组件的技术负责人)的回答:

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

这是来源的链接:

/sf/answers/4309895831/