如何知道我的可组合屏幕是否通过深层链接打开

问题描述 投票:0回答:1

我有一个包含多个可组合屏幕的活动。 每个屏幕都具有有意打开或通过用户点击打开的功能。 此外,每个可组合屏幕都有一个后退箭头。

我想做的是知道该可组合项是通过深层链接打开的还是用户只是在该屏幕中单击了

android navigation android-jetpack-compose
1个回答
0
投票

您可以为所有屏幕设置额外参数以检测源。当您从应用程序内部导航时,您可以将源参数设置为“应用内”,但是当您通过深层链接导航时,您可以将该参数设置为“深层链接”。收到深层链接后,您可以在 MainActivity 中使用此代码:

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        val navController = rememberNavController()

        // Handle deep links
        intent?.data?.let { uri ->
            val source = "deeplink"
            navController.navigate(Screen.Detail.createRoute(source))
        }

        NavHost(navController = navController, startDestination = Screen.Home.route) {
            composable(Screen.Home.route) {
                HomeScreen(navController)
            }
            composable(Screen.Detail.route) { backStackEntry ->
                val source = backStackEntry.arguments?.getString("source") ?: "user"
                DetailScreen(source)
            }
        }
    }
}

上面的代码将检测来自深层链接的意图,并将参数设置为“深层链接”,然后导航到您想要的屏幕。在屏幕中,您可以像这样检查来源:

@Composable
fun DetailScreen(source: String) {
    val isOpenedFromDeepLink = source == "deeplink"

    // Your UI logic
    if (isOpenedFromDeepLink) {
        // Handle deep link specific logic
    } else {
        // Handle user navigation specific logic
    }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.