Android开发 WebView ERR_CACHE_MISS Cannot call determinedVisibility()

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");

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值