Jetpack Compose 中的Deep Linking — Android
在本文中,我们将学习如何在 Jetpack Compose 中轻松实现深度链接。
什么是深度链接?
深层链接允许用户直接从外部来源(例如网站或其他应用程序)导航到应用程序内的特定内容。
添加依赖性
app/build.gradle.kts
并添加导航依赖项。
dependencies {
implementation("androidx.navigation:navigation-compose:2.5.3")
}
现在让我们回到MainActivity.kt
并设置导航。
步骤1
创建navController.
val navController = rememberNavController()
第2步
创建NavHost
和Screen
。
NavHost(
navController = navController,
startDestination = "home"
) {
composable(
route = "home"
) {
// ...
}
}
现在我们需要为应用程序定义统一资源标识符 (URI) 。基本上,URI是指向我们应用程序的链接。当用户打开此链接时,它将被重定向到应用程序。这是我的:
val uri = "https://www.ad-coding.com"
我们还定义一个指向主屏幕的深层链接并传递参数。为此,我们需要定义一个列表navDeepLink
并使用backStackEntry
来获取参数。
composable(
route = "home",
deepLinks = listOf(
navDeepLink {
uriPattern = "$uri/{id}"
}
)
) { backStackEntry ->
val homeNumber = backStackEntry.arguments?.getString("id")
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Text(text = homeNumber ?: "No number")
}
}
现在我们需要将URI链接到应用程序。打开AS“工具” 选项卡并选择“应用程序链接助手”。
打开URL Mapping Editor > 单击 + 按钮并 添加我们之前在Host字段中定义的URI,然后单击OK。
如果我们点击我们创建的主机,我们可以看到它在AndroidManifest.xml.
Action.VIEW
— 这意味着可以启动该组件来查看特定内容。Category.DEFAULT
— 表示该组件是一个典型的组件,可以默认启动。Category.BROWSABLE
— 表示该组件可以从 Web 浏览器启动。android:scheme
— https, 是处理 URL 的协议。android:host
—www.ad-coding.com
, 是基本链接。
我们还要检查URL是否映射到MainActivity
.
我们需要做的最后一件事是测试URI。单击测试应用程序链接。
让我们传递URI以及末尾用/. 之后运行测试,它应该是成功的。
参考链接
https://medium.com/@daniel.atitienei/deep-linking-in-jetpack-compose-android-f9a70d432896