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");
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");
相关文章推荐
- DexIndexOverflowException issue after updating to latest appcompat and support library
- iOS开发之KVC全解
- Mybatis3.3.x技术内幕(二):动态代理之投鞭断流(自动映射器Mapper的底层实现原理)
- 六、策略设计模式
- (一)C# winform C/S WebBrowser 微信第三方登录
- APP打包后上传遇到ERROR ITMS-90096解决办法
- Java 对象流ObjectInputStream和ObjectOutputStream类
- android 刮刮卡效果
- IOS 读二进制数据文件
- iOS tableViewCell 代理
- Android中用onSaveInstanceState保存Fragment状态的方法
- android之绘制相关类
- Unity AssetStore下载目录
- cocos2d-x Tiled地图坐标转换
- iOS_时间戳与时间间的互相转化
- iOS~runtime理解
- 安卓Selector失效、无用的解决方案
- Android快捷方式
- Android 图片填充动画
- Android学习路线总结,绝对干货(转)