相关疑难解决方法(0)

带有深层链接的 Android 导航组件:多次调用 onNewIntent

这次我需要你的帮助来使用带有深度链接的 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

10
推荐指数
2
解决办法
3642
查看次数

导航组件似乎只是使用短动态链接(firebase)

导航组件似乎只是使用短动态链接

示例:长动态链接

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 动态深度链接 + 导航组件的文档

android firebase firebase-dynamic-links androidx

7
推荐指数
1
解决办法
1398
查看次数