WebViewClientで使える関数のまとめ

最近webviewを利用しているのですが、思うように実装をされてないものが多く、割と苦労をしてしまいます。その中でもwebClientの中にはいくつかの関数を上書きして利用すると便利なのですが、まとめて載せてあるサイトがなかったので、カンタンな説明と、参考になるサイトがあるおのに関しては参照させていただいております。

 

使える関数というのは、次のような使い方です。

-.setWebViewClient(new WebViewClient(){
function この関数(){

}
});

 

■public void onLoadResource (WebView view, String url)

//サイトを読み込む時にそのリソースを検証する。
※外部サイトの際、Intentなどで、標準のブラウザに飛ばすなどで利用できる。

cf:世田谷のエンジニア ブログ

 

■public void onPageFinished (WebView view, String url)

//ページの読み込みの終了※使いやすい!!

 

■public void onPageStarted (WebView view, String url, Bitmap favicon)

//ページの読み込みのスタート※使いやすい

 

■public void onReceivedError (WebView view, int errorCode, String description, String failingUrl)

//ページの読み込み失敗

 

■public void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm)

//ベーシック認証などサーバーへの設定を行える。

cf:ダメ男のブログ

 

■public void onReceivedLoginRequest (WebView view, String realm, String account, String args)

//Notify the host application that a request to automatically log in the user has been processed.
公式の文ですが、セッションが効く状態でページに遷移をした場合にトップから勝手にマイページへ飛ぶなどの処理かと思います。

 

■public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error)

SSLページのエラー処理を行う部分。エラーでも進むなどの対応ができるらしい
android2.2より対応

cf:My Happiness

 

■public void onScaleChanged (WebView view, float oldScale, float newScale)

//これはそのまま、スケールの変更だと思う。

 

■public void onTooManyRedirects (WebView view, Message cancelMsg, Message continueMsg)

//This method is deprecated. This method is no longer called. When the WebView encounters a redirect loop, it will cancel the load
無限ループに遭遇した場合の対処。との事です。ですが、このメソッドは既に廃止されていますとの事なので、使わない方が無難。

 

■public void onUnhandledKeyEvent (WebView view, KeyEvent event)

//Notify the host application that a key was not handled by the WebView.
(不確か)おそらくキーボードイベントなど取得できないサイトで、キーをたたく場合。
(逆にブラウザ独自のショートカットキーを入れる時などに利用するのでは?と思います。)

 

■public WebResourceResponse shouldInterceptRequest (WebView view, String url)

//読み込み直前に呼ばれる。

 

■public boolean shouldOverrideKeyEvent (WebView view, KeyEvent event)

//各種キーイベントを呼び出すのに利用ができるようです。
onUnhandledKeyEventでは、handle出来ないキーイベントの取得でしたが、こちらは
上書きなので、割と使いやすかもしれません。

 

■public boolean shouldOverrideUrlLoading (WebView view, String url)

//各読み込み
※個人的に利用をしていたときに、super.shouldOverrideUrlLoading(view,url)を読み込んでいなかった為、
他で設定したファンクションが動かないというバグが発生してしまいました。ここでは、値にmailtoが入っていた場合には、Intentでメーラーを動作させるなどができます。

cf:MARTINI R&D

※上記サイトのメール送信用プログラムは大変勉強になりますが、return super.shouldOverrideUrlLoading(view,url);などをしてあげないと、他の関数を利用する際にバグが出てしまいました。webChromeViewの方で_blankを開く設定をしてた場合に開かなくなりました。

一応、googleさんの参照

http://developer.android.com/reference/android/webkit/WebViewClient.html

 

割と難しいですが、使えると楽です。以上です。

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑