深度 link 导航到父级 activity 不适用于导航架构组件显式深度 link

Deep link navigating to parent activity does not work with navigation architecture component explicit deep link

我有一个配置文件 activity 和 MainActivity,它是配置文件 Activity 的父级。我有一个没有 ui 的通用 activity 来处理使用显式 deep links

的 deep links 重定向

清单文件

 <activity
        android:name=".ui.profile.ProfileActivity"
        android:screenOrientation="portrait"
        android:parentActivityName="com.peoplemesh.now.ui.MainActivity" >

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".ui.MainActivity" />
</activity>

深linkactivity代码

val pendingIntent = NavDeepLinkBuilder(this)
    .setGraph(R.navigation.profile_nav)
    .setDestination(R.id.profileFrag)
    .setArguments(bundle)
    .setComponentName(ProfileActivity::class.java)
    .createPendingIntent()

pendingIntent.send(0)

个人资料屏幕

navController.setGraph(R.navigation.profile_nav, bundle)

val appBarConfiguration = AppBarConfiguration(
    topLevelDestinationIds = setOf(),
    fallbackOnNavigateUpListener = ::onSupportNavigateUp
)

mBinding.toolbar.setupWithNavController(navController, appBarConfiguration)

深入 link 到配置文件Activity -> 向上导航 -> 关闭应用程序(因为堆栈中没有 activity)。

我该如何解决这个问题?

更新:

不确定这是否有帮助或报告了类似问题https://issuetracker.google.com/issues/142379671?pli=1

好的。在放置调试断点并浏览框架代码后,我找到了答案。看来这是一个错误。

我所做的是覆盖默认行为。来源 - NavUtils.navigateUpTo() does not start any Activity

    override fun onSupportNavigateUp(): Boolean {

        val upIntent = NavUtils.getParentActivityIntent(this)
        if (NavUtils.shouldUpRecreateTask(this, upIntent!!) || isTaskRoot) {
            TaskStackBuilder.create(this)
                .addNextIntentWithParentStack(upIntent)
                .startActivities()
        } else {
            NavUtils.navigateUpTo(this, upIntent!!)
        }
        return true
}

这确实有效

我也有这个

   val appBarConfiguration = AppBarConfiguration(
        topLevelDestinationIds = setOf(),
        fallbackOnNavigateUpListener = ::onSupportNavigateUp
    )

    toolbar
        .setupWithNavController(navController, appBarConfiguration)