WebViewのカスタマイズ

WebViewClientを継承するクラスを作り、必要なメソッドをオーバーライドすることで、動作をカスタマイズできます。
下記は基本的なメソッドのみ例示しています(全メソッドはコチラ → WebViewClient | Android Developers)。

private class MyWebViewClient extends WebViewClient {
  @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {
       super.shouldOverrideUrlLoading(view, url);

      // ページが読み込まれる直前に呼ばれるので、URLをチェックして開き方を変えることができる。
       // この例ではmarket://で始まるURLならPlayアプリで開く。
       if (url.startsWith("market://")) {
           try {
               Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
               startActivity(intent);
           }
           catch (android.content.ActivityNotFoundException e) {
               // 開くアプリがない例外への対処
           }
           
           return true;    // trueを返すとアプリでURLを扱う(WebViewでURLを開かない)
       }

      return false;       // falseを返すとWebViewでURLを扱う(そのままWebViewで開く)
   }

  // ページ読み込み開始時に呼ばれる
   @Override
   public void onPageStarted(WebView view, String url, Bitmap favicon) {
       super.onPageStarted(view, url, favicon);

      // 読込ダイアログ表示などの処理
   }

  // ページ読み込み完了時に呼ばれる
   @Override
   public void onPageFinished(WebView view, String url) {
       super.onPageFinished(view, url);

      // 読込ダイアログ非表示など処理
   }

  // エラー発生時に呼ばれる
   @Override
   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
       super.onReceivedError(view, errorCode, description, failingUrl);

      // エラーページ表示などの処理
   }
}



コメントを投稿するには画像の文字を半角数字で入力してください。


画像認証

  • 最終更新:2013-07-18 15:29:09

このWIKIを編集するにはパスワード入力が必要です

認証パスワード