如何在导航组件中使用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工具栏应该与更改保持同步的工具栏 到NavController。
有了这个,我了解到工具栏将承担navController的任何更改(startDestination的更改,打开的深层链接等)