Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

WebViewでGeolocationを有効にする

AndroidのWebView中で位置情報を使ったコードを実行できるようにする方法のメモです。
最低限動く最小構成と思ってくださいませ。

AndroidManifest.xmlに以下のパーミッションを追加する

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

WebViewの設定をする。

(略)
        WebSettings settings = mWebView.getSettings();
        settings.setGeolocationEnabled(true);
        settings.setJavaScriptEnabled(true);

        //ピンチ・ズームを有効にしたい場合は以下も設定する
       settings.setBuiltInZoomControls(true);

        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onGeolocationPermissionsShowPrompt(String origin,
                    GeolocationPermissions.Callback callback) {
                // 常に位置情報を許可する
                callback.invoke(origin, true, false);
            }
        });

setGeolocationEnabled(true)で位置情報を使用可能にします。
setJavaScriptEnabled(true)も使用可能にしておきます。
setWebChromeClientの中でonGeolocationPermissionsShowPromptメソッドを上記のように
オーバーライドして常に位置情報を許可するようにします。

以上です。