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

e5njpo68  于 2022-11-03  发布在  Android
关注(0)|答案(4)|浏览(158)

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

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

taor4pac1#

一个更简单的替代方法是使用LocalUriHandler

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

保持简短和甜蜜😊

mwkjh3gx

mwkjh3gx2#

以下是一种可行的方法:

@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!")
    }
}

在@可组合函数中,有一个叫做“组合局部变量”的东西。
CompositionLocal类允许通过可组合函数将数据隐式传递给其可组合后代
LocalContext是这些类中的一个。指定的Intent是在Android上打开外部URL的常用方式。

xu3bshqb

xu3bshqb3#

@可组合的有趣WebButton(){

val context = LocalContext.current
val webIntent: Intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com/"))

OutlinedButton(onClick = { context.startActivity(webIntent) }, modifier = Modifier.padding(8.dp)) {
    Text( text = "OPEN WEB",
        )
}

}

flvlnr44

flvlnr444#

我一直在使用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))
           }

相关问题