本文介绍: 废话不多说,直接上代码: View mImgNodata;//这个是自定义的错误界面,里面有刷新按钮 private boolean mIsLoadSuccess = true; @SuppressLint({“AddJavascriptInterface“, “SetJavaScriptEnabled“}) private void initwebView() { webSettings = mWebview.getSettings();//获得WebView的设置
废话不多说,直接上代码:
View mImgNodata;//这个是自定义的错误界面,里面有刷新按钮
private boolean mIsLoadSuccess = true;
@SuppressLint({"AddJavascriptInterface", "SetJavaScriptEnabled"})
private void initwebView() {
webSettings = mWebview.getSettings();//获得WebView的设置
webSettings.setJavaScriptEnabled(true); //支持js
webSettings.setUseWideViewPort(true);// 设置此属性,可任意比例缩放
webSettings.setAllowFileAccess(true);
webSettings.setLoadWithOverviewMode(true);//适配
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //设置 缓存模式
webSettings.setDomStorageEnabled(true);// 开启 DOM storage API 功能
webSettings.setDatabaseEnabled(true);//开启 database storage API 功能
webSettings.setAppCacheEnabled(true);//开启 Application Caches 功能
//webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);// 排版适应屏幕
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setAllowFileAccess(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setSupportZoom(true); //支持缩放,默认为true。是下面那个的前提。
webSettings.setBuiltInZoomControls(true); //设置内置的缩放控件。若为false,则该WebView不可缩放
webSettings.setDisplayZoomControls(true); //隐藏原生的缩放控件
webSettings.setBlockNetworkImage(false);//解决图片不显示
webSettings.setLoadsImagesAutomatically(true); //支持自动加载图片
webSettings.setDefaultTextEncodingName("utf-8");//设置编码格式
//加上这个
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
webSettings.setAllowFileAccessFromFileURLs(true);
}
//该界面打开更多链接
mWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String s) {
webView.loadUrl(s);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
if (pd != null && pd.isShowing()) {
pd.dismiss();
}
if (mIsLoadSuccess) {
mImgNodata.setVisibility(View.GONE);
mWebview.setVisibility(View.VISIBLE);
} else {
mImgNodata.setVisibility(View.VISIBLE);
mWebview.setVisibility(View.GONE);
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
//Log.e(TAG, "onReceivedError: ----url:" + error.getDescription());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return;
}
if (pd != null && pd.isShowing()) {
pd.dismiss();
}
// 在这里显示自定义错误页
mImgNodata.setVisibility(View.VISIBLE);
mWebview.setVisibility(View.GONE);
mIsLoadSuccess = false;
}
// 新版本,只会在Android6及以上调用
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (request.isForMainFrame()) { // 或者: if(request.getUrl().toString() .equals(getUrl()))
// 在这里显示自定义错误页
mImgNodata.setVisibility(View.VISIBLE);
mWebview.setVisibility(View.GONE);
mIsLoadSuccess = false;
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//Log.e("web", "页面加载ssl onReceivedSslError = " + error.toString());
//handler.cancel();// 默认的处理方式,WebView变成空白页
handler.proceed();//忽略证书的错误继续Load页面内容,不会显示空白页面
// super.onReceivedSslError(view, handler, error);
}
});
//解决WebView无法弹出alert框问题
mWebview.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
return super.onJsAlert(view, url, message, result);
}
});
mWebview.addJavascriptInterface(new JsInterface(), "Android");
mWebview.loadUrl(Urls.mIp + "pages/login/login");
}
//点击自定义界面刷新按钮.
@OnClick(R.id.txt_fresh)
public void onClick() {
mIsLoadSuccess = true;
initwebView();
}
核心代码:onPageFinished(),onReceivedError() //注意有俩个方法,不同的参数
原文地址:https://blog.csdn.net/qq_34512796/article/details/123641271
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_41276.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。