首页 > 解决方案 > 如何在导航图 Android 中通过 URI 处理深层链接?

问题描述

如何在导航组件中使用 CTA Uri 打开深度链接而不丢失回栈?

动机:

private fun openDeepLink(cta: String) { // cta= schema://host
  navigationController?.run{
    val deeplink = this
            .createDeepLink()
            .setDestination(cta)
            .build()

    handleDeepLink(deeplink)
   }
}

或者

 navigationController?.createDeepLink()
            ?.setUriDestination(cta)
            ?.createTaskStackBuilder()
            ?.startActivities()

使用

navigationController?.handleDeepLink(Intent(Intent.ACTION_VIEW, Uri.parse(url)))

仅适用于向上按钮(工具栏),不适用于系统后退按钮。我仍然不明白为什么我使用时工具栏和本机背面没有对齐:

toolbar.setupWithNavController(findNavController(R.id.activity_base_container))

和文件说:

  • @param toolbar 应与 NavController 更改保持同步的工具栏。

有了这个,我知道工具栏将假设 navController 的任何更改(startDestination 上的更改,打开深度链接等)

标签: androidandroidxandroid-architecture-navigation

解决方案


推荐阅读