私のWebViewでは、ヘッダーに複数のリンクがあります。オフラインモードでは、ページの再読み込みを許可せず、そのページをそのままにしてから、インターネット接続についてユーザーに通知する必要があります。他のリンクをクリックすると、ロードする前にリンクをキャッチできshouldOverrideUrlLoading
ます。しかし、同じリンクをクリックすると、shouldOverrideUrlLoading
起動されません。代わりに、onLoadResource
メソッドが最初に呼び出されます。その方法で試しwebView.stopLoading();
ましたが、動作を継続し、onReceivedError
メソッドを起動し、ページにエラーレポートを表示します。
これが私のWebClientです。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(MyApplication.getInstance().isOnline()) {
return false;
}
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i("ON_PAGE_START", "RUNNING ============>" + url);
if (MyApplication.getInstance().isOnline()) {
super.onPageStarted(view, url, favicon);
} else {
webView.stopLoading();
}
}
@Override
public void onLoadResource(WebView view, String url) {
if (MyApplication.getInstance().isOnline()) {
super.onLoadResource(view, url);
} else {
webView.stopLoading();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
view.stopLoading();
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
私が望んでいるのは、オフラインの場合にURLが起動されないようにして、そのことを通知できるようにすることです。