android9之前(android8以及之前)的版本WebView不兼容H5部分界面,发生白屏的处理办法。

本文主要是介绍android9之前(android8以及之前)的版本WebView不兼容H5部分界面,发生白屏的处理办法。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:app需要用H5加载一个WebView网页,百度和淘宝等都可以加载,但是公司的前端写的部分H5无法加载成功,出现白屏。这个问题出现在android9之前,android9以及以后的版本呈现正常。查资料尝试过关闭掉硬件加速和setDomStorageEnabled 没效果。

webView.getSettings().setDomStorageEnabled(true);

后面用手机模拟器和云真机测试过很多机器,发现有极少数的android8机器上面不会出现白屏。所以就怀疑根本原因不是android版本导致的。曾经玩小米手机翻墙的时候,安装facebook等一些国外app的过程中,有过让下载webview apk的提示。于是我怀疑是不是存在webview的版本造成的。于是网上查,android的插件Android System WebView。 在开发者选项的里面是存在WebView的实现的

里面去查看版本

ok,然后我找测试机模拟器出现问题的进行统计,发现60以及以下的版本会有问题,64以及 以上的版本正常 ,61-63没条件测试。ok, 那就找到直接原因了。接下来如何解决?

方案1.查找原因H5进行兼容,能兼容最好啦

方案2.移动端进行处理。就是直接去检测这个webvIew的版本号,如果是64以下,那么就去更新最新的版本就行了对吧?如何更新呢,发现旧android系统的webView是跟随系统进行升级的,老版本并不会在应用市场提示更新。怎么办?了解到android的所有插件基本上就是一个apk,那么可不可以自己安装呢,于是在应用市场找到这个。Download Android System WebView APKs for Android

 于是进行下载,安装,发现Android System WebView已经更新到了安装的版本。ok, 那么就有思路了。在打开app的时候就去检测版本,如果版本太低了,就去根据版本去下载新的插件(插件放在自己的服务器上),安装就行了.下面是检测代码

    //获取所有包名public ArrayList<HashMap<String, Object>> getItems(Context context) {PackageManager pckMan = context.getPackageManager();ArrayList<HashMap<String, Object>> items = new ArrayList<HashMap<String, Object>>();List<PackageInfo> packageInfo = pckMan.getInstalledPackages(0);//注意 老版本webView包名是com.android.webview  后面的是com.google.android.webview  两个app都要去取 然后比较版本最新的那一个,判断是否需要更新for (PackageInfo pInfo : packageInfo) {if("com.android.webview".equals(pInfo.packageName)){//旧版本webView的包名Log.i("lishaobing-1",pInfo.packageName);Log.i("lishaobing-1",pInfo.versionCode+"");Log.i("lishaobing-1",pInfo.versionName);}if("com.google.android.webview".equals(pInfo.packageName)){//新安装版本webView的包名Log.i("lishaobing-1",pInfo.packageName);Log.i("lishaobing-1",pInfo.versionCode+"");Log.i("lishaobing-1",pInfo.versionName);}}

打印

 注意:我在测试华为机器的时候,发现有个版本号为70的,也显示白屏。所以关于是否兼容这个特例,就看各位了。这里提示下

方法2:比较简单用腾讯X5即可解决兼容性问题,低版本强制下载X5内核,

这篇关于android9之前(android8以及之前)的版本WebView不兼容H5部分界面,发生白屏的处理办法。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367552

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

当你输入一个网址后都发生什么

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。 本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~