はじめに
Androidアプリの開発を行なっていて、利用規約やプライバシーポリシーのページなどをアプリ内で実装するのではなく、外部のWebページとして実装したい場合などはありませんか?
その場合に、どのようにリンクを端末内でひらけば良いのかを2種類の方法を使って紹介します。
この記事はJetpack Composeでの実装を考えている方向けの記事となっていますのでご了承ください。
WebViewを使う方法
Jetpack ComposeでWebView
を使うには、AndroidView
を使用します。
factory
に::WebView
を渡します。
レイアウトがインフレートされたupdate
に指定したコールバックが呼び出されるので、loadUrl()
を呼び出してURLを開きます。
AndroidView(
factory = ::WebView,
update = { webView ->
webView.webViewClient = WebViewClient()
webView.loadUrl(url)
}
)
端末内のブラウザを使う方法
Jetpack Composeにおいて、外部URLをデフォルトのブラウザを使って開く場合にはUriHandler
を使います。
UriHandler
のインスタンスは、コンポーザブル内でLocalUriHandler.current
を使って取得します。
val uriHandler = LocalUriHandler.current
uriHandler.openUri(uiState.url)
まとめ
最初、ブラウザを使ってURLを開く場合にACTION_VIEW
のインテントを作成する必要があるのかなと思っていたのですが、ものすごくかんたんに実装できることがわかりAndroidのありがたさをひしひしと感じました。
参考にした記事