这次我需要你的帮助来使用带有深度链接的 android 导航组件。
我一直在关注这个文档,片段和深层链接之间的连接工作正常。
问题在于接收深层链接的活动。就我而言,我设置了 android:launchMode="singleTask"
<activity android:name=".features.welcome.WelcomeActivity"
android:launchMode="singleTask">
<nav-graph android:value="@navigation/welcome_nav_graph" />
</activity>
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
Timber.d("onNewIntent: $intent with activity: $this")
navController.handleDeepLink(intent)
}
Run Code Online (Sandbox Code Playgroud)
通过这种配置,我注意到了一些奇怪的行为:
每次单击深层链接时,WelcomeActivity 都会收到两次 onNewIntent 调用。甚至有时会创建该活动的新实例..就像
1_ object1-onNewIntent
2_ object1-onNewIntent
3_ object2-onCreate
这里有一些日志:
首次发布
onCreate:意图 { flg=0x10000000 cmp={applicationId}/{package}.WelcomeActivity } 活动:{package}.WelcomeActivity@4adbef0
打开深层链接
onNewIntent: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://{depp_link}… flg=0x10010000 cmp={applicationId}/{package}.WelcomeActivity(有附加)} 与活动:{package}.WelcomeActivity@4adbef0
onNewIntent: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://{depp_link}... flg=0x1001c000 cmp={applicationId}/{package}.WelcomeActivity (有额外的)} 与活动:{package}.WelcomeActivity@4adbef0
onCreate: Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=https://{depp_link}... flg=0x1001c000 cmp={applicationId}/{package}.WelcomeActivity (有额外的)} 与活动:{package}.WelcomeActivity@b77c6b
杀死应用程序并打开深层链接
onCreate: Intent …
android android-jetpack android-architecture-navigation android-jetpack-navigation
导航组件似乎只是使用短动态链接
示例:长动态链接
https://domaindebug.page.link/?link=https://www.website.com&apn=com.x.debug&isi=122...6&ibi=com.ios.x.debug&efr=1
Run Code Online (Sandbox Code Playgroud)
短动态链接
https://domaindebug.page.link/register
Run Code Online (Sandbox Code Playgroud)
<fragment
android:id="@+id/fragment_register"
android:name="com.x.presentation.feature.identification.view.RegisterFragment"
tools:layout="@layout/fragment_register">
<action
... />
<argument
android:name="code"
android:defaultValue="@null"
app:argType="string"
app:nullable="true" />
<deepLink
android:id="@+id/deepLink"
app:uri="https://domaindebug.page.link/register?code={code}" />
</fragment>
Run Code Online (Sandbox Code Playgroud)
如果我点击长动态链接,没有任何反应。我该如何管理?我也找不到任何关于集成 firebase 动态深度链接 + 导航组件的文档