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メソッドを上記のように
オーバーライドして常に位置情報を許可するようにします。
以上です。