android WebView加载网页白屏问题优化处理

问题描述:
使用webview加载Web界面时,会出现界面白屏的情况。http下通常问题不大,通常https白屏的可能性很大,而且通常没有任何报错。

解决方案:
1、启用javascript。
2、使用setDomStorageEnabled方法来支持HTML5中的一些控件标签。【重要】
3、允许有https和http混合的内容。
4、跳过页面中的特殊url。
5、允许证书错误。
6、允许javascript错误。【重要】
话不多说开搞代码如下:
开启网络权限 :

<uses-permission android:name="android.permission.INTERNET" />
WebView webview = findViewById(R.id.viewWeb);WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true); // 启用javascript
settings.setDomStorageEnabled(true); // 支持HTML5中的一些控件标签
settings.setBuiltInZoomControls(false); // 自选,非必要
//处理http和https混合的问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
} else {settings.setMixedContentMode(WebSettings.LOAD_NORMAL);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {// 允许javascript出错try {Method method = Class.forName("android.webkit.WebView").getMethod("setWebContentsDebuggingEnabled", Boolean.TYPE);if (method != null) {method.setAccessible(true);method.invoke(null, true);}} catch (Exception e) {// do nothing}
}webview.setFocusable(true); // 自选,非必要
webview.setDrawingCacheEnabled(true); // 自选,非必要
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); // 自选,非必要
webview.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int progress) { // 显示加载进度,自选//注意textView的视图层级应该在webView上,不然就被webView遮挡住了TextView progressTV = findViewById(R.id.progressTV);progressTV.setText(String.format(Locale.CHINA, "%d%%", progress));progressTV.setVisibility((progress > 0 && progress < 100) ? View.VISIBLE : View.GONE);}@Overridepublic void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {super.onGeolocationPermissionsShowPrompt(origin, callback);callback.invoke(origin, true, false); // 页面有请求位置的时候需要}
});
webview.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url.startsWith("http://") || url.startsWith("https://")) { // 4.0以上必须要加view.loadUrl(url);return true;}return false;}@Overridepublic void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {//super.onReceivedSslError(view, handler, error)switch (error.getPrimaryError()) {case SslError.SSL_INVALID: // 校验过程遇到了bugcase SslError.SSL_UNTRUSTED: // 证书有问题handler.proceed();default:handler.cancel();}}
});
webview.loadUrl("https://space.bilibili.com/11705539/&;quot;);

android WebView加载网页白屏问题优化处理相关推荐

  1. vivo oppo 手机8.1.0 webview加载H5白屏问题

    记录一个webview 的深坑. vivo oppo 手机8.1.0 webview加载H5白屏问题 查看log发现: 神奇的报错 解决办法: 删除掉配置文件里的8.0的新特性适配: 感谢stacko ...

  2. 关于安卓webview加载网页黑屏、部分黑屏或blank的解决方法

    很多朋友在利用安卓的webview加载网页的时候 可能会出现黑屏现象 这种情况出现在Android4.4版本以上比较多 第一点的版本可能是blank空白.然后 有些朋友会在不断的修改webview的一 ...

  3. Android WebView加载网页,图片等元素宽度大小不兼容手机屏幕的宽度

    无论是Android手机还是iOS手机,使用WebView加载一些没有专门为手机屏幕做适配的网页的时候,就会出现网页中的图片等标签元素的宽度大小和手机屏幕的宽度不一致的情况,如下图 之所以会出现上面的 ...

  4. android webview加载网页,文字listview和image混合listview的实现

    android和ios内置浏览器支持html5,还支持CSS3和js 下面的一个小例子,我来实现android加载html页面.还有两个列表,回顾一下listview的功能.文章内容较浅,没有特别高的 ...

  5. Android WebView 加载网页只显示空白页不显示网页

    Android 在使用WebView控件将网页嵌入应用的时候有时会遇到页面显示不出来或者显示为空白页的情况 我在项目中也遇到了这个问题 , 尝试了很多方法都没有解决问题 ,最终找到了解决方法: Web ...

  6. Android WebView 加载https网页白屏,空白解决方案

    最近在做一个H5相关的需求,使用WebView加载第三方提供的https网页时显示白屏.但是调试打开Baidu和B站的https网址时就能正常打开.被这个问题困扰了半天. 合作方说是android手机 ...

  7. android动态设置错误页面,Android中替换WebView加载网页失败时的页面

    我们用webView去请求一个网页链接的时候,如果请求网页失败或无网络的情况下,它会返回给我们这样一个页面,如下图所示: 上面这个页面就是系统自带的页面,你觉得是不是很丑?反正小编本人觉得非常丑,很难 ...

  8. Android webview加载html代码 上下左右有白边问题

    直接开始 之前写过一篇文章 Android webview加载html自适应屏幕  也可以参考一下 后台返回一串html代码字符串 然候客户端用webview做展示  别的都正常  只是四周会有白边 ...

  9. android webView加载网络视频

    之前,我写过webView加载本地网页的博客,今天,就写写webView加载网络视频的内容. 一.加载网页 1.WebView用来显示网页,使用必须时刻注意我们需要添加网络权限 <uses-pe ...

最新文章

  1. 基础篇-verilog-按位与和逻辑与
  2. 磁盘的块大小(Block Size)和扇区大小(Sector Size)
  3. url中传递对象参数_在URL参数中传递复杂对象
  4. 红旗linux 进不去图形界面,进不了红旗Linux6.0的图形界面请高手帮忙
  5. 有关 给Layout设置监听事件后,与Layout子控件的响应关系
  6. Linux文本复制到记事本文本文件乱码,解决“在windows里的记事本里编辑的汉字文本文件,上传到linux服务器上出现乱码“问题...
  7. 软件测试的金字塔体系--从1个中心到5个要素
  8. DBD::Oracle的库文件报失问题
  9. dubbo常用类和路径
  10. python api框架 hook_Windows API Hooking in Python
  11. matlab中求积函数,高斯求积公式 matlab
  12. JSPL中用fn:contains()判断list中是否包含某个值
  13. 反函数求导:自然对数 ln是怎么得到的;为什么自然对数的导数是 1/ x;arcsin 和 arccos 的导数求算
  14. C++语言课程设计——超市商品管理系统
  15. NYoj21 三个水杯
  16. 2022-2028全球与中国移动网页浏览器市场现状及未来发展趋势
  17. 电脑浏览器一直显示邮箱服务器失败,各种PC客户端都无法连接Outlook.com邮箱
  18. 刷脸支付新技术的蔓延能出乎我们的意料
  19. android 删除插件,Android手机如何添加删除桌面图标和插件
  20. TC358746AXBG/748XBG 桥接器说明

热门文章

  1. 用户没有权限安装软件是什么原因?
  2. 【Effection C++】读书笔记 条款26:尽可能延后变量定义式的出现时间
  3. python如何区分文件类型_Python库 使用filetype精确判断文件类型
  4. 2013年计算机专业,2013年计算机专业大学排名
  5. 【代码】LeetCode刷题Python版
  6. 4 Python 先学会基本语法
  7. 新房装修怎么搭配软装,方法技巧有哪些?-好佳居软装十大品牌
  8. 爬采集浙江省市场主体杭州企业名录
  9. uni.openLocation起始点定位,IOS手机无法返回等问题
  10. sha256 c++实现代码