【问题标题】:How to handle offline when loading url in WebView?在 WebView 中加载 url 时如何处理离线?
【发布时间】:2015-10-28 06:39:19
【问题描述】:

WebView 加载 url 时,用户可能无法访问互联网(例如,他使用路由器,但帐户中的钱已结束)。

在这种情况下,WebView 显示自己的 html“网页不可用”。

我尝试使用自定义 WebViewClient 和回调:

@Override
    public void onReceivedError(android.webkit.WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
    }

但它没有被调用。

WebView加载url时离线如何处理?

附:请不要提供检查网络状态的解决方案。我只对 WebView 感兴趣。

【问题讨论】:

  • 我找到了我的WebView的错误回调不起作用的原因:getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);

标签: android webview


【解决方案1】:

试试这个:

 @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);
  }

【讨论】:

  • 首先,此方法已被弃用。其次,如果设备处于离线状态,则不会调用此方法,而是为我调用了“onPageFinished”。
  • 我找到了我的WebView的错误回调不起作用的原因:getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
【解决方案2】:

嘿,这样做是为了向检查您的数据的用户提供弹出窗口.. StackOverflow link

AndroidHive link

【讨论】:

    【解决方案3】:

    我找到了我的 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);
        }
    

    又开始工作了

    【讨论】:

      【解决方案4】:

      1.将你的错误模板保存为资产中的error.html

      2.发生错误时从资产加载模板 webview.loadUrl("file:///android_asset/error.html");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多