Android WebView监听加载失败_替换WebView加载网页失败时的页面
2015-09-25 12:48:08  By: dwtedx

在android中、使用webview打开界面失败时、会显示系统默认的一个失败页面、但是这个页面太丑、想自己写一个一面在加载失败时显示自己的页面、方法很简单、先在asset下面放一个静态的网页、然后在WebViewClient中重写onReceivedError()方法、代码如下


private class MessageWebViewClient extends WebViewClient {
    CustomProgressDialog mProgressDialog = null;
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }
    
    @Override
    public void onReceivedError(WebView view, int errorCode,
            String description, String failingUrl) {
        // TODO Auto-generated method stub
        super.onReceivedError(view, errorCode, description, failingUrl);
        Toast.makeText(TeacherActivity.this, "服务器异常", Toast.LENGTH_SHORT).show();
        mWebview.loadUrl("file:///android_asset/errorpage/error.html");
        isPageError = true;
    }
}


上面的代码虽然显示了自己的错误页面、但是在点击返回时返现返回的还是默认的失败页面、说明在加载我自己的网页之前已经加载过默认的界面、我的解决方法是做一个flag、如果是错误页面、直接finish();页面

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if(keyCode==KeyEvent.KEYCODE_BACK)
    {
        if(mWebview.canGoBack() && !isPageError)
        {
            mWebview.goBack();//返回上一页面
            return true;
        }
        else
        {
            finish();
        }
    }
    return super.onKeyDown(keyCode, event);
}


当然也可以提前验证手机是否连接网络、WebView的实质就是loadUrl、所以前提是设备接入网络、那么这个如何判断呢?看代码吧:

// 网络状态
public boolean isNetworkConnected(Context context) {
    if (context != null) {
        ConnectivityManager mConnectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mNetworkInfo = mConnectivityManager
                .getActiveNetworkInfo();
        if (mNetworkInfo != null) {
            return mNetworkInfo.isAvailable();
        }
    }
    return false;
}


最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1qWDZlt6 密码: ycc7

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+