WebView内で通信エラーでエラー画面表示さす
WebView内で通信エラーになった場合(net::ERR_CONNECTION_TIMED_OUT)、エラーページを表示さすようにハンドリング
#WebViewClient生成時に定義してあげる
○準備(既にassetsディレクトリがある場合は不要)
HTMLを置くassetsディレクトリを作成する。
AndroidStudioのプロジェクトのappを右クリック→[新規]→[New]→[Folder]→[Assets Folder]を選択。
app/src/main/asestsディレクトリが作成される。
また、build.gradleに以下のとおり追記する。(自動挿入されることもあるので、既にあったら編集不要)
android { sourceSets{ main{ assets.srcDirs=["src/main/assets"] } } ・ ・ ・
app/src/main/asestsにエラー画面のHTML(network_error.html)を配置して準備終了
○WebViewクラスにコーディング
次のとおりWebView生成時にオーバーラードして実装する。
WebView webView = (WebView) findViewById(R.id.webView); webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView webview, int errorCode, String description, String failingUrl) { if(errorCode < 0){ // 自作のエラーページを表示 webView.loadUrl(“file:///android_asset/network_error.html”); } }
参考URL
http://www.hangout.co.jp/blog/archives/148
http://stackoverflow.com/questions/4997677/android-webview-onreceivederror
http://growsic.com/blog/androidlocalhtml/