在WebView中加载URL时如何脱机处理?

时间:2015-10-28 06:39:19

标签: android webview

当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感兴趣。

4 个答案:

答案 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

AndroidHive 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.html

2.当发生错误时从资产加载模板             webview.loadUrl(&#34;文件:///android_asset/error.html");