Откройте ссылку в браузере с помощью Compose for Desktop
Как открыть ссылку в браузере , если я нажмите на на кнопку . Я использую для этого Compose for Desktop .
Button(onClick = {
// What I have to write here..
}) {
Text(
text = "Open a link",
color = Color.Black
)
}
Заранее спасибо.
3 ответа
Используйте метод Desktop#browse(URI) . Он открывает URI в браузере пользователя по умолчанию.
public static boolean openWebpage(URI uri) {
Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(uri);
return true;
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
public static boolean openWebpage(URL url) {
try {
return openWebpage(url.toURI());
} catch (URISyntaxException e) {
e.printStackTrace();
}
return false;
}
Вдохновленный /questions/40996375/kak-otkryit-brauzer-po-umolchaniyu-s-pomoschyu-java/40996384#40996384 , чтобы также работать на Linux и Mac:
fun openInBrowser(uri: URI) {
val osName by lazy(LazyThreadSafetyMode.NONE) { System.getProperty("os.name").lowercase(Locale.getDefault()) }
val desktop = Desktop.getDesktop()
when {
Desktop.isDesktopSupported() && desktop.isSupported(Desktop.Action.BROWSE) -> desktop.browse(uri)
"mac" in osName -> Runtime.getRuntime().exec("open $uri")
"nix" in osName || "nux" in osName -> Runtime.getRuntime().exec("xdg-open $uri")
else -> throw RuntimeException("cannot open $uri")
}
}
Button(onClick = { openInBrowser(URI("https://domain.tld/page")) }) {
Text(
text = "Open a link",
color = Color.Black
)
}
Минимальный пример
- поместите код функции в модуль commonMain
expect fun browseUrl(url: String)
- поместите код функции в модуль DesktopMain
actual fun browseUrl(url: String) {
val desktop = Desktop.getDesktop()
desktop.browse(URI.create(url))
}
- использовать
onClick = {
browseUrl("http://${link}")
}