#android #kotlin #onclick #android-jetpack-compose
Вопрос:
Как программно открыть внешний URL-адрес при нажатии кнопки с помощью jetpack compose?
@Composable
fun MyButton() {
Button(onClick = {
//enter code here
})
}
Ответ №1:
Вот возможный способ сделать это:
@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-один из этих классов. Указанное намерение является распространенным способом открытия внешнего URL-адреса на Android.
Комментарии:
1. Большое вам спасибо, я попробую.
2. Сработало великолепно! Еще раз спасибо
3. Приятно это слышать!
Ответ №2:
Более простой альтернативой является использование LocalUriHandler
:
val uriHandler = LocalUriHandler.current
uriHandler.openUri(uri)
Пусть это будет коротко и мило 😊
Ответ №3:
Я использовал 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))
}
Ответ №4:
@Составной веселый ВебБаттон() {
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",
)
}
}