欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android WebView监听加载失败_替换WebView加载网页失败时的页面

程序员文章站 2022-03-01 12:55:20
...

在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