如何使用 Jetpack Compose 以编程方式在单击按钮时打开外部 URL?

问题描述 投票:0回答:5
如何使用 Jetpack Compose 以编程方式在单击按钮时打开外部 URL?

@Composable fun MyButton() { Button(onClick = { //enter code here }) }

	
android kotlin onclick android-jetpack-compose
5个回答
125
投票
LocalUriHandler

:

val uriHandler = LocalUriHandler.current
uriHandler.openUri(uri)

保持简短而甜蜜😊


24
投票

@Composable fun MyButton() { val context = LocalContext.current val intent = remember { Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/")) } Button(onClick = { context.startActivity(intent) }) { Text(text = "Navigate to Google!") } }

在 @Composable 函数内部,有一个叫做 
“组合局部变量”

CompositionLocal 类允许通过可组合函数隐式地将数据传递给其可组合后代

LocalContext 就是这些类之一。 指定的Intent,是Android上打开外部URL的常用方式。


13
投票
LocalUriHandler.current

处理程序中访问

onClick
会引发错误:
"@Composable invocations can only happen from the context of a @Composable function"
我通过将这行代码移至按钮

外部

解决了这个问题: val uriHandler = LocalUriHandler.current Button(onClick = { uriHandler.openUri(...) ) { // Your label goes here }



0
投票
}


-1
投票
CustomTabsIntent

,这是在手机浏览器中打开链接的另一种可能性。 // Within your @Composable function define the context val val context = LocalContext.current //Then in your modifier clickable use the CustomTabsIntent builder modifier = Modifier .padding(start = 24.dp, end = 16.dp) .align(Alignment.CenterVertically) .clickable { CustomTabsIntent.Builder().build().launchUrl(context, Uri.parse(pageUrl)) }

	
© www.soinside.com 2019 - 2024. All rights reserved.