您的位置:首页 > 移动开发

Android开发 WebView ERR_CACHE_MISS Cannot call determinedVisibility()

2016-04-27 10:23 756 查看
WebSettings webSettings=mWebView.getSettings();

webSettings.setSavePassword(false);//是否自动保存密码

webSettings.setSaveFormData(false);//表格数据

webSettings.setAppCacheEnabled(true);//缓存

if (Build.VERSION.SDK_INT >= 19) {

mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//缓存

}

webSettings.setJavaScriptEnabled(true); //支持JavaScript

webSettings.setBuiltInZoomControls(true);

webSettings.setSupportZoom(true);//支持缩放

webSettings.setAllowFileAccess(true); // 允许访问文件

webSettings.supportMultipleWindows();//多窗口

webSettings.setLoadsImagesAutomatically(true);//自动加载图片

/**

* 用WebView显示图片,可使用这个参数 设置网页布局类型: 1、LayoutAlgorithm.NARROW_COLUMNS :

* 适应内容大小 2、LayoutAlgorithm.SINGLE_COLUMN:适应屏幕,内容将自动缩放

*/

webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS);

webSettings.setUseWideViewPort(true);//如果setUseWideViewPort( true ) , 它将WebView加载和该网页的元标记内定义的属性。 那么根据定义缩放网页, 在html

webSettings.setLoadWithOverviewMode(true);//setLoadWithOverviewMode( true ) 加载WebView完全缩小

webSettings.setDisplayZoomControls(false);//false 不显示缩放按钮 true 显示

mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);//提高渲染等级

mWebView.getSettings().setBlockNetworkImage(true);//阻塞,先不加载图片(阻止图片的网络数据)

mWebView.getSettings().setBlockNetworkImage(false);//解除阻止

mWebView.getSettings().setBlockNetworkLoads(false);//默认false,设置为true,网页上面报net::ERR_CACHE_MISS错误 log Cannot call determinedVisibility() - never saw a aconnetion for the pid:xxx(这个项目中我的错误是这样的)

mWebView.requestFocusFromTouch();//支持手势焦点,如果不设置,可能会导致网页上面输入法弹不出来

mWebView.getSettings().setDomStorageEnabled(true);

mWebView.requestFocus();//设置是否获得焦点。若有requestFocus()被调用时,

//后者优先处理。注意在表单中想设置某一个如EditText获取焦点,光设置这个是不行的,需要将这个EditText前面的focusable都设置为false才行。在Touch模式下获取焦点需要设置focusableInTouchMode为true。

/*

*web.setInitialScale(25); 25%为最小缩放等级

* 解释: 里面的数字代表缩放等级

web.setInitialScale(100); 代表不缩放。

什么是不缩放? 比如你要加载的网页中有图片的宽度是 500px ,如果你的手机分辨率(屏幕宽度) 是1000的话,那么整个图片只占一半的屏幕。 其他的字体都是按照标准展示

如果这个时候如果你设置 web.setInitialScale(200) ,代表放大一倍,真个网页都会放大一倍,这个时候图片正好展示整个屏幕宽度,另外网页的字体也会放大一倍

如果这个时候如果你设置 web.setInitialScale(50) ,代表缩小一倍,这个时候图片正好展示只占屏幕的四分之一,另外网页的字体也会同时变小*/

mWebView.setInitialScale(25);

mWebView.setBackgroundColor(0);

mWebView.setWebChromeClient(new WebChromeClient(){

/**

* 网页加载进度条 顶部 横向

*/

@Override

public void onProgressChanged(WebView view, int newProgress) {

if(newProgress<100||newProgress>=0){

pbLoadLine.setVisibility(View.VISIBLE);

}

pbLoadLine.setProgress(newProgress);

super.onProgressChanged(view, newProgress);

}

});

// 设置超链接使用WebView加载,不使用系统本身的浏览器

mWebView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

// 此处URL加载的是Web网页上的超链接,切勿修改成WebView的请求地址

mWebView.loadUrl(url);

return true;

}

@Override

public void onPageStarted(final WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

//开始加载网页时处理,如:显示“加载提示”的加载对话框

if(view!=null){

ivExit.setImageResource(R.drawable.ic_stop_for_url_edit_normal);

ivExit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

view.stopLoading();//停止加载

pbLoadLine.setVisibility(View.GONE);//隐藏进度条

}

});

}

}

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

//网页加载完成时处理 如:让“加载对话框”消失

if(view!=null){

ivExit.setImageResource(R.drawable.icon_forward);

}

pbLoadLine.setVisibility(View.GONE);//隐藏进度条

ivExit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

mWebView.goBack();

}

});

}

@Override

public void onReceivedError(WebView view, int errorCode,

String description, String failingUrl) {

if (NetUtil.isConnectivity(mContext)) {

ToastUtils.DefaultToast(mContext, getString(R.string.toast_webInternet_data_error));

// finish();

} else {

ToastUtils.DefaultToast(mContext, getString(R.string.toast_webInternet_no_internet));

// finish();

}

}

public void onReceivedSslError(WebView view,

SslErrorHandler handler, SslError error) { // 重写此方法可以让webview处理https请求

handler.proceed();

}

});

mWebView.loadUrl("http://www.baidu.com");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: