Android webview onReceivedError显示自定义错误页面并重新加载以前的URL onResume

时间:2012-11-06 00:49:46

标签: android webview

我们假设已经加载了一个网址(我们将其称为原始网址)。

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        webView.loadUrl("file:///android_asset/missing.html");
    } 
});

我创建了自己的错误页面,以防止出现“网页不可用消息”。 应用程序必须在每次恢复时重新加载webview。所以我有以下几行代码:

@Override
protected void onResume() {
    super.onResume();
    webView.reload();
}

这里的问题是,当加载错误页面时(例如,当用户未连接到互联网时),然后连接再次可用并且用户恢复应用程序时,原始URL未加载(似乎逻辑,目前现在缺少。)。但这是一个很好的方法吗?有什么问题的建议吗?

如果用户想要重新加载内容,还有一个刷新按钮。同样的问题在这里。

3 个答案:

答案 0 :(得分:3)

您应该加载想要的网址而不是使用webView.reload(),如下所示:

webView.loadUrl("http://yoururl");

或返回上一页:

webView.loadUrl("javascript:history.go(-1)");

答案 1 :(得分:0)

我会检查onResume()中的互联网连接,就像http://developer.android.com/training/basics/network-ops/managing.html

上建议的那样
public static boolean isOnline() {
  ConnectivityManager connMgr = (ConnectivityManager) App.instans.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
  return (networkInfo != null && networkInfo.isConnected());
}

public void onResume() {

答案 2 :(得分:0)

不仅移动连接可能断开,而且页面也可能不可用,正如您正确地说的那样,使用webview.loadUrl(“ someerrorpage.html”)会创建虚假历史记录,并在用户尝试刷新或按下时引起问题回来。

我的解决方案是用我自己的自定义标签替换默认错误页面的内容,例如

webView.evaluateJavascript("javascript:document.open();document.write('your custom error html');document.close();", null);