当WebView加载网址时,用户可能无法访问互联网(例如,他使用路由器,但帐户中的资金已结束)。
在这种情况下,WebView显示自己的html"网页不可用"。
我尝试使用自定义WebViewClient和回调:
@Override
public void onReceivedError(android.webkit.WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
}
但它没有被召唤。
如何在WebView中加载网址时离线处理?
P.S。请不要提供检查网络状态的解决方案。我只对WebView感兴趣。
答案 0 :(得分:0)
试试这个:
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(String.valueOf(errorCode), description);
// API level 5: WebViewClient.ERROR_HOST_LOOKUP
if (errorCode == -2) {
String summary = "<html><body style='background: black;'><p style='color: red;'>Unable to load information. Please check if your network connection is working properly or try again later.</p></body></html>"; view.loadData(summary, "text/html", null);
return;
}
// Default behaviour
super.onReceivedError(view, errorCode, description, failingUrl);
}
答案 1 :(得分:0)
嘿,这样做是为了给用户检查数据的弹出窗口。 StackOverflow link
答案 2 :(得分:0)
我找到了为什么不能运行我的WebView错误回调的原因:
getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
删除后,此方法:
@Override
public void onReceivedError(android.webkit.WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
再次开始工作
答案 3 :(得分:-1)
1.将错误模板保存为资产
中的error.html2.当发生错误时从资产加载模板 webview.loadUrl(&#34;文件:///android_asset/error.html");