Android関連

特定のURL以外は標準ブラウザで開く方法. http://aquaman.cocolog-nifty.com/blog/2011/08/androidwebviewc.html を参考に,修正してみました.

java;highlight:[3,7,24,54,116,117,118,119,120,121,122,123,124,125,126,127,127,128,129,130]

package com.example.mywebview;

import android.net.Uri; import android.os.Bundle; import android.annotation.SuppressLint?; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.view.KeyEvent?; import android.view.Menu; import android.view.MenuItem?; import android.view.Window; import android.webkit.WebView?; import android.webkit.WebViewClient?; import android.webkit.WebChromeClient?; import android.webkit.GeolocationPermissions?.Callback; import android.widget.Toast;

public class MainActivity? extends Activity {

	public static final int MENU_SELECT_A = 0;
	public static final int MENU_SELECT_B = 1;
	public static final int MENU_SELECT_C = 2;
	private static WebView myWebView;
	@SuppressLint("SetJavaScriptEnabled")
	@Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       //タイトルバーを削除する
       requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.activity_main);
     //レイアウトで指定したWebViewのIDを指定する。
      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 myWebViewClient());
       //最初にYahoo! Japanスマホ版のページを表示する。
       myWebView.loadUrl("http://m.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 myWebView =(WebView)findViewById(R.id.webView1);
	        myWebView.goBack();
	        return true;
	    }
	    return super.onKeyDown(keyCode, event);
	}
   //オプションメニュー
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       //getMenuInflater().inflate(R.menu.activity_main, menu);
       menu.add(0, MENU_SELECT_A, 0, "再読込み");
       menu.add(0, MENU_SELECT_B, 0, "ヘルプ");
       menu.add(0, MENU_SELECT_C, 0, "終了");
   return true;
   }
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
       //WebView myWebView =(WebView)findViewById(R.id.webView1);
       switch (item.getItemId()) {
       case MENU_SELECT_A:
       	//再読み込みボタンが押されたときの処理
       	 myWebView.reload();
       	return true;
       case MENU_SELECT_B:
           // 第3引数は、表示期間(LENGTH_SHORT、または、LENGTH_LONG)
           Toast.makeText(this, "簡易ブラウザβ版", Toast.LENGTH_LONG).show();
           return true;
       case MENU_SELECT_C:
       	//終了ボタンが押されたとき
       	myWebView.clearCache(true); // キャッシュのクリア
       	myWebView.clearHistory(); // 履歴のクリア
       	finish();
     }
       return false;
   }
   //Yahoo! Japan 以外のサイトへ接続するときは,標準ブラウザで開く
   public class myWebViewClient extends WebViewClient {
       public myWebViewClient() {
           super();
       }
       @Override
       public void onPageStarted(WebView view, String url, Bitmap favicon) {
           if(!url.startsWith("http://m.yahoo.co.jp/")) {
               myWebView.stopLoading();
               Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
               startActivity(i);
           }
       }
   }

}

}}


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