もくもくログ
主にIT 関連のメモをもくもくと綴っていきます
Android 開発していて、なんだかんだでWebView を使うことが多かったのですが、WebView の設定って、数種類のクラスを併用するので、それぞれを覚えるのが面倒でした。
そこでその負担を軽減すべく、フラットに設定していくことが出来るWebViewBuilder というライブラリを作ってみました。
この度1.0.x としてリリースしたので、その内容を記載していきます。
導入方法などはREADME をご確認ください。
下記クラスをKotlin スコープ関数やメソッドチェーンで設定し、それをWebView に反映できます。
下記のようなXML があるとして、その設定例を紹介していきます。
<FrameLayout ......>
<WebView
android:id="@+id/webview_target"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus />
</WebView>
</FrameLayout>
permissionsdispatcher-ktx を利用するとこんな感じで設定できます。
WebViewBuilder()
.geolocationEnabled(true)
.javaScriptEnabled(true)
.onGeolocationPermissionsShowPrompt { origin, callback ->
withPermissionsCheck(
Manifest.permission.ACCESS_FINE_LOCATION,
onNeverAskAgain = { callback?.invoke(origin, false, false) },
onPermissionDenied = { callback?.invoke(origin, false, false) },
onShowRationale = { it.proceed() }
) {
callback?.invoke(origin, true, false)
}
}
.into(findViewById<WebView>(R.id.webview_target))
.loadUrl("https://www.google.co.jp/maps")