WebViewを使ったアプリ作成その2

位置情報を取得する。

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

importに以下を追加

java

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

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

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

}} それから

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

}} を追加する。

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

プログラム

java;highlight:[11,12,30,31,32,33,34,35,36,37,38,53,54]

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;
   }

}

}}


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-22 (金) 20:07:00 (1373d)