[Android] 位置情報の取得

位置情報を取得する。

スマートフォンの GPSを利用して、位置情報を表示したいときは以下のようにする。

importに以下を追加

import android.webkit.WebChromeClient; import android.webkit.GeolocationPermissions.Callback; }}

WebView webView = (WebView)findViewById(R.id.webView1); の次の行に以下を追加

       //位置情報
       myWebView.setWebChromeClient(new WebChromeClient(){
           @Override
           public void onGeolocationPermissionsShowPrompt(
             String origin,
             Callback callback) {
             callback.invoke(origin, true, false);
           }
         });

 

それから

       //geolocationを許可する
       myWebView.getSettings().setGeolocationEnabled(true);

を追加する。

AndroidManifestの uses-permission でandroid.permission.ACCESS_FINE_LOCATION を許可する。

プログラム

package com.example.mywebview;

import android.os.Bundle; import android.annotation.SuppressLint?; import android.app.Activity; import android.view.KeyEvent?; import android.view.Menu; import android.view.Window; import android.webkit.WebView?; import android.webkit.WebViewClient?; import android.webkit.WebChromeClient?; import android.webkit.GeolocationPermissions?.Callback;

public class MainActivity? extends Activity {

	@SuppressLint("SetJavaScriptEnabled")
	@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       //タイトルバーを削除する
       requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.activity_main);
     //レイアウトで指定したWebViewのIDを指定する。
       WebView  myWebView = (WebView)findViewById(R.id.webView1);
       //位置情報
       myWebView.setWebChromeClient(new WebChromeClient(){
           @Override
           public void onGeolocationPermissionsShowPrompt(
             String origin,
             Callback callback) {
             callback.invoke(origin, true, false);
           }
         });
       //リンクをタップしたときに標準ブラウザを起動させない
       myWebView.setWebViewClient(new WebViewClient());
       //最初にYahoo! Japanのページを表示する。
       myWebView.loadUrl("http://www.yahoo.co.jp/");
       //jacascriptを許可する
       myWebView.getSettings().setJavaScriptEnabled(true);
       //右側のスクロールバーの隙間をなくす
       myWebView.setVerticalScrollbarOverlay(true);
       //geolocationを許可する
       myWebView.getSettings().setGeolocationEnabled(true);
   }
	//バックキーが押されてもアプリを終了しない
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
	    if (keyCode == KeyEvent.KEYCODE_BACK) {
	        WebView webView =(WebView)findViewById(R.id.webView1);
	        webView.goBack();
	        return true;
	    }
	    return super.onKeyDown(keyCode, event);
	}
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.activity_main, menu);
       return true;
   }

}