【发布时间】:2020-05-30 01:50:47
【问题描述】:
希望你们一切都好。
我有一个小问题;
我正在使用导航组件,单个活动多个片段。我对深度链接有一个小问题。
我在 manifest 中设置了
<nav-graph/>并设置了 launcherMode="singleTask",我在导航图中设置了
<deeplink/>。我已经在片段中处理了 Intent Extras。
我的流程是;
- 用户点击忘记密码,填写编辑文本然后请求深度链接邮件。工作正常
- 用户点击电子邮件中的深层链接并选择应用程序,然后自动导航到 CreatePasswordFragment(深层链接目标片段)&(我可以在此处处理 args,也可以正常工作)
问题是;有时如果应用程序在后台打开(例如我请求邮件然后按下主页按钮)并且当我单击深度链接时,最后一个片段运行而不是目标片段 CreatePasswordFragment 关于可能导致问题的任何想法?
谢谢!
导航版本:2.2.0
电子邮件附带的深层链接
http://myurl/forgot-password/?key=sodmoq9wwdW1djkssdqMEdqlsp
导航图
<deepLink android:id="@+id/deepLink"
app:uri="http://myurl/forgot-password/?key={key}"/>
<argument
android:name="key"
app:argType="string" />
Android 清单
<activity
...
android:launchMode="singleTask">
<nav-graph android:value="@navigation/navigation_main" />
</activity>`
反编译清单
<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>
【问题讨论】:
-
你解决了这个问题了吗?
-
@mrJoe 很遗憾没有。
-
我尝试通过捕获意图手动处理深层链接,然后通过调用 findNavController().navigate() 显式导航到请求的片段,但之后我无法既不通过按返回键也不通过调用 navigate() 方法从这个新片段导航到另一个片段。您是否为此使用了一些解决方法?
-
@MithatSinanSarı 运气好吗?
-
@SoH 不幸的是,没有。我们现在手动处理。
标签: android android-architecture-navigation android-deep-link