Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?

这篇具有很好参考价值的文章主要介绍了Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

专栏分享
  • 点击跳转=>Unity3D特效百例
  • 点击跳转=>案例项目实战源码
  • 点击跳转=>游戏脚本-辅助自动化
  • 点击跳转=>Android控件全解手册
  • 点击跳转=>Scratch编程案例
  • 点击跳转=>软考全系列

👉关于作者

众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣 !!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎私我,交流群让学习不再孤单

Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?

👉实践过程

😜情况一

比如我第一个要说的就是你项目如果集成了AutoSize的话,并且使用了副单位,会有一定概率webview里面适配失效,注意失效后会因为单位特别大等原因看起来是白屏(其实是超出了可视范围导致看不见了而已),你还需要适配下即可。继承下webview,复写setOverScrollMode方法,里面设置AutoSize即可。我在这一块吃了很大的一个亏。气死了。

class YourWebView : WebView { 
  constructor(context: Context) : super(context) { 
   }
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { 
   }
    override fun setOverScrollMode(mode: Int) { 
        super.setOverScrollMode(mode)
        AutoSize.autoConvertDensityOfGlobal(context as Activity)
    }
}

😜情况二

其实只要你百度基本都能发现,最多的就是setDomStorageEnabled属性设置为true来解决。
其实确实是这样。但是我们要有一个概念,白屏不一定是webview的原因,还有可能是其他的原因,比如上面的AutoSize。
HTML5 的 DOM Storage 机制提供了一种方式让程序员能够把信息存储到本地的计算机上,在需要时获取。这点和 cookie 相似,区别是 DOM Storage 提供了更大容量的存储空间。
localStorage 对象和 sessionStorage 对象使用方法基本相同,它们的区别在于作用的范围不同。sessionStorage 用来存储与页面相关的数据,它在页面关闭后无法使用。而 localStorage 则持久存在,在页面关闭后也可以使用。

😜情况三

本身html就有bug,别不信,遇到好几次了。前端同事在他那跑起来没问题,可随时Android运行就是不行,后来一点发现直接在浏览器运行就有问题。前端同事很有可能在开发环境下没事,发布出来就有毛病了,或者是从大模块里摘出来的小模块,大模块下运行着没事,小模块摘出来没弄好导致问题。

😜情况四

合理适时的清理webview的缓存,以及webview页面关闭硬件加速。平时工作中和前端交流也是,他们说的最多的就是缓存问题,web遇见bug或问题,说浏览器或缓存的问题,刷新下就好了。挺魔幻的。

// 清缓存和记录,缓存引起的白屏
mWebView.clearCache(true);
mWebView.clearHistory();
//... 有很多clear的方法

😜情况五

https的问题,当load通过SSL加密的HTTPS页面时,如果这个页面的安全证书无法得到认证,WebView就会显示成空白页。比如出现Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https。
这个是开启相关设置即可。
通过重写WebViewClient的onReceivedSslError方法来接受所有网站的证书,忽略SSL错误。

  @Override
  public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
       handler.proceed();
       super.onReceivedSslError(view, handler, error);
   }
webSetting.setAllowUniversalAccessFromFileURLs(true);

😜情况六

在Android 5.0之后,WebView默认不允许Https + Http的混合使用方式,所以当Url是Https的,图片资源是Http时,导致页面加载失败。需要设置 MixedContentMode属性允许Https+Http混用。

WebSettings wetSettings = webView.getSettings();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    wetSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

😜情况七

多android版本兼容问题,在Android7.0+,打开二级页面跳转的时候,会出现空白!!原因是不同版本的系统WebViewClient的回调里shouldOverrideUrlLoading方法的loadurl不一定是地址,也有可能是对象。

WebViewClient client = new WebViewClient() {
    //防止加载网页时调起系统浏览器
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            view.loadUrl(request.getUrl().toString());
        } else {
            view.loadUrl(request.toString());
        }
        return true;
    }
   //.......
};

😜情况八

如果上面都不行,一般就是自己做更深的检测了。思路是:

  1. 截取当前屏幕的内容,获得Bitmap
  2. 判断Bitmap是否为白色图片
  3. 针对白屏做相应的处理

可参考:https://juejin.cn/post/6972901939197509669

😜情况九

事实证明高级语言,什么框架啊,前沿技术啊,都有很多的坑,兼容问题,他们的表现在某方面可能好但并不是全部适用。如果你是领导,且是以出产品为目的,挺推荐约束同事就用原生的开发,渐渐的累积起来后续开发会越来越快。

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?文章来源地址https://www.toymoban.com/news/detail-459493.html

到了这里,关于Android问题笔记 - 解决WebView白屏空白的九种方案,AutoSize?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium绕过浏览器指纹的九种方法

    方法一、使用stealth.min.js 去 https://github.com/berstend/puppeteer-extra 下载 反正我是没成功,大家仅供参考 方法二、关闭一些特征 没成功,大家参考下 方法三、使用selenium-stealth 我也没成功,大家可以试试 方法四:方法1+2+3组合使用 试了,没用,大家可以自行测试下 方法五: 中间

    2024年02月02日
    浏览(42)
  • 软件开发的权限系统功能模块设计,分享主流的九种常见权限模型

    软件系统的权限控制几乎是非常常见且必备的,这篇文章整理下常见的九种模型,几乎基本够你用了,主流的权限模型主要有以下9种: 1、ACL模型 访问控制列表 2、DAC模型 自主访问控制 3、MAC模型 强制访问控制 4、ABAC模型 基于属性的访问控制,更灵活复杂 5、RBAC模型 基于角

    2024年02月09日
    浏览(40)
  • 解决Mac系统android monitor启动时卡住,显示白屏的问题

    清安装1.8版本的jdk,java1.8版本以上不支持android monitor;如果你电脑上安装有java 11等高级别的版本,请自行搜索,如果在mac上安装多jdk,以及如何切换到1.8版本上 请更新SWT插件,下载地址; 1.打开网页,点击4.9 跳转到另外的网页  2.跳转到的网页如下所示意   3. 点击下载此版

    2024年02月12日
    浏览(35)
  • 解决Electron中WebView加载部分HTTPS页面白屏的方法

    Electron是一个开源的桌面应用程序框架,它允许使用Web技术构建跨平台的桌面应用。在Electron应用中, WebView 是一个常用的组件,用于嵌套加载Web内容。然而,有时候在加载使用 HTTPS 协议的页面时,可能会因为证书问题导致白屏现象。 问题描述: 当 WebView 尝试加载某些 HTTP

    2024年02月02日
    浏览(51)
  • 已解决:安卓自带的webview加载前端h5项目白屏时长严重,vue首页加载白屏时间过长,那我让app进入的时候就提前加载网页

    自己写的vue项目,自己写的安卓壳子,本来自己觉得慢,忍忍就过去了,但是人家觉得慢,你不得改么?结果是前端自己开发,安卓也自己开发,想甩个锅都没法甩,总不能甩给后端吧?哈哈哈 描述一下我的情况,我写了一个vue项目,需要嵌在安卓里运行,没想到安卓webvi

    2024年02月03日
    浏览(59)
  • Android WebView H5视频播放实现全屏播放功能、全屏按钮不显示、灰显、点击无效问题解决方案

    打开硬件加速(3.0以上版本支持) set一个WebChromClient,实现onShowCustomView() 方法和onHideCustomView()方法 全屏支持 打开硬件加速 在Manifest中,对应的Activity添加: android:hardwareAccelerated = “true”。 防止h5重新加载:Manifest中,对应的Activity添加: android:configChanges=“keyboardHidden|orientation|s

    2024年02月09日
    浏览(61)
  • android Webview组件 跨域问题

    (1)使用Android webView访问html页面,碰到ajax跨域访问时,仅仅在header中加入 (2)无法解决跨域访问问题,可以给webview设置下面配置

    2024年02月15日
    浏览(38)
  • flutter-设置开屏页 解决开屏白屏问题

    当您的应用程序打开时,本机应用程序会短暂加载 Flutter。默认情况下,在此期间,本机应用程序会显示白色启动屏幕。该包自动生成 iOS、Android 和 Web 本机代码,用于自定义本机启动画面背景颜色和启动图像。支持深色模式、全屏和特定于平台的选项。 因为我不需要使用到

    2024年02月12日
    浏览(36)
  • 关于解决一些游戏白屏但是有声音问题的方法

    这篇文章主要是关于解决一些游戏打开白屏方法的建议 首先来讲一下白屏的原因,主要原因基本就是显卡不支持你所运行的游戏的图像功能或者有一些把显卡驱动给卸载了(当然还有一些比较离谱的像是显卡没插好,或者买到假显卡等等。。。。。。)。 解决方案 首先先按

    2024年02月09日
    浏览(172)
  • 【VUE】解决图片视频加载缓慢/首屏加载白屏的问题

      在 Vue3 项目中,有时候会出现图片视频加载缓慢、首屏加载白屏的问题 通常是由以下原因导致的: 图片或视频格式不当:如果图片或视频格式选择不当,比如选择了无损压缩格式,可能会导致文件大小过大,从而影响加载速度。 页面中同时加载了大量的图片和视频,导致

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包