shion のアバター画像もくもくログページ一覧ブログ一覧技術メモ一覧ライセンス表記利用規約外部リンクconnpassGitHubSpeaker DeckTwitter[工事中]Shion のもくログバージョン1.2.5

もくもくログ

主にIT 関連のメモをもくもくと綴っていきます

この記事の情報は古い可能性があります
最終更新日:2020/04/18 07:00:26
WebViewBuilder 1.0.x のリリースノートAndroid

Android 開発していて、なんだかんだでWebView を使うことが多かったのですが、WebView の設定って、数種類のクラスを併用するので、それぞれを覚えるのが面倒でした。
そこでその負担を軽減すべく、フラットに設定していくことが出来るWebViewBuilder というライブラリを作ってみました。
この度1.0.x としてリリースしたので、その内容を記載していきます。
導入方法などはREADME をご確認ください。

新機能と既知の問題

下記クラスをKotlin スコープ関数やメソッドチェーンで設定し、それをWebView に反映できます。

  • WebChromeClient
  • WebSettings
  • WebViewClient

下記のような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")

リンク

成果物

参考資料

一覧に戻る