前瞻

WebView在loadUrl的时候,可能会出现网页打不开的问题,这种问题网上一搜一大把,但是可能看了一圈下来没有你想要的答案,或许有一种可能是你平时OkHttp请求没有忽略却在配置WebView的时候忽略了,急性子请直接看文末。

起因

本人在替换x5WebView的时候遇到了这个问题,其中这是第二次替换了,第一次替换完全没有遇到任何阻碍,如果有同学在遇到了一些配置上的问题,可以去腾讯浏览服务查看步骤传送门

本人遇到的问题如图所示,并且本人试了直接加载百度首页,也是打不开的

过程

网上有人说是android:networkSecurityConfig=""没有配置的问题,那当然不是,因为这些配置都是之前就配好的,并不是我从头开始写的这个项目,只是拿过来维护修改而已。循着这个思路,我仔细对比了网上说的一些WebView配置问题,这些大差不差,domStorageEnabled = true是肯定设置了的,那些关键配置一个没少,那可能是什么原因呢?

我在替换过程中是自己重新写了一个WebView基类,也没有看以前的代码,索性拿过来翻了翻,发现自己少重写了一个方法,这个方法在替换x5WebView已经WebView基本设置里都没有看到啊,但是自己想了想,发送网络请求的过程中确实会遇到这个问题,就是onReceivedSslError()方法,新建WebViewClient没有重写这个方法!可能我们在做demo的时候也没有重写但是并没有问题,但是对于成品项目中,这个方法不重写处理一下的话,应该都是通过不了的吧。

Android应用中WebView访问https SSL证书网页时,Google Play 总是报 WebView 的 onReceivedSslError 错误(ERR_SSL_PROTOCOL_ERROR )。为避免谷歌安全警告,要重写WebView的onReceivedSslError方法,此时要弹框提示用户,是否忽略SSL错误,继续访问网页。

百度如是说。

具体做法可见这位老哥写的,还是很清楚的传送门

具体自己怎么做就看各位的做法了,我这里肯定是直接SslErrorHandler.proceed了,没有什么其他要处理的地方了

处理办法

重写WebView中设置的WebViewClient的onReceivedSslError()方法。忽略ssl证书错误,继续执行,

     webViewClient = object : WebViewClient() {override fun onReceivedSslError(p0: WebView?, p1: SslErrorHandler?, p2: SslError?) {p1?.proceed()}override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边}}

其他遇到的一些问题

搜索框光标丢失问题
替换好了之后有个搜索页面,跳转进去之后理应弹出键盘,搜索框内显示光标,可是理想总是美好的,显示并不是这样。检查,mWebView.requestFocus()已设置,再检查

 android:focusable="true"android:focusableInTouchMode="true"

WebView已设置改属性。奇了怪了,没生效?
不是,键盘弹出来了,但是光标没有显示,大概率是焦点聚焦问题,还好这个问题不是很麻烦,比较百度前几条就有一个解决的案例,传送门!就是将上面xml中设置焦点的可用的代码放在WebView的父布局中,比如FrameLayout中,再次运行,解决问题。

滑动压缩问题
这个问题困扰了我半年之余,因为该问题,已经被领导催了两次,这次机缘巧合给解决了,也幸好web端人员积极配合。
就是加载本地静态列表页面或者部分网络请求的列表页,滑动会被压缩,是很严重的那种,真机上也会出现。
出现问题之后,网上说是开启硬件加速的问题,但是我明确表示,没有开!各种配置下都没有开,app到Activity到view。我对比了不压缩的WebView设置,进行了两种对比,其实并没有太大的问题,复制过来之后依旧会压缩,然后第一次换了x5之后,还是会压缩,但是没那么厉害了。后来我将静态列表页面中的html内容复制出来,自己写了一个html,没有任何样式和js,再次放入WebView,神奇的一幕出现了,没有压缩,不管是原生的还是x5,都顺畅运行!
随后web端进行了样式修改,他取消了某种样式之后,确实不再压缩,但是不行,这个样式全局都有使用,一时半会取消不了(如果有类似的问题,可以让web先排查,毕竟WebView的设置只有那些,可能不是Native的问题)。
这次解决也是巧合,替换了最新的x5之后,我按照文档取消了加速相关的所有设置,都是默认的,使用了会导致压缩的样式,模拟器会轻微压缩,但是真机不会,具体的配置我发在下面,也算稀里糊涂解决这个问题了吧。总结:html样式背一部分的锅,另一部分,应该还是和WebView有关。目前我是app开启硬件加速了,但是view层不设置了,具体这部分我都有对比设置过,这不是解决问题的关键。发出来只是供大家参考一下,具体什么原因造成设置怎么解决的,本人也处于丈二和尚摸不着头脑的状态。
冲冲冲!

 init {//WebSettings设置settings.apply {//设置默认编码格式为“UTF-8”defaultTextEncodingName = "UTF-8"//设置DOM存储可用domStorageEnabled = true//js可用javaScriptEnabled = true//支持js打开新窗口javaScriptCanOpenWindowsAutomatically = true//支持自动加载图片loadsImagesAutomatically = true//设置数据库存储可用databaseEnabled = true//在File域下,能够执行任意的JavaScript代码,同源策略跨域访问能够对私有目录文件进行访问等allowFileAccess = trueblockNetworkImage = falseblockNetworkLoads = false//设置应用缓存可用setAppCacheEnabled(true)//设置缓存路径setAppCachePath(context.applicationContext.getDir("cache", Context.MODE_PRIVATE).path)//缓存模式:不使用缓存cacheMode = WebSettings.LOAD_NO_CACHE//支持页面缩放setSupportZoom(true)//缩放使用放大放小按钮控制builtInZoomControls = true//不显示边界滑动条displayZoomControls = false//使用浏览器组件,建议使用useWideViewPort = trueloadWithOverviewMode = true//启用地理定位setGeolocationEnabled(true)//支持Http与Https混合模式mixedContentMode = 0//设置是否允许通过 file url 加载的 Js代码读取其他的本地文件(有风险,非内部网页建议关闭)setAllowFileAccessFromFileURLs(true)//设置是否允许通过 file url 加载的 Javascript 可以访问其他的源(包括http、https等源)(有风险,非内部网页建议关闭)setAllowUniversalAccessFromFileURLs(true)//调整线程优先级(一般不建议调整,默认normal)setRenderPriority(WebSettings.RenderPriority.HIGH)//取消垂直和水平方向的滑动栏isVerticalScrollBarEnabled = falseisHorizontalScrollBarEnabled = false//不允许弹性滑动overScrollMode = View.OVER_SCROLL_NEVER//硬件加速//setLayerType(View.LAYER_TYPE_HARDWARE, null)webViewClient = object : WebViewClient() {override fun onReceivedSslError(p0: WebView?, p1: SslErrorHandler?, p2: SslError?) {p1?.proceed()}override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {// 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边return super.shouldOverrideUrlLoading(view, url)}}addJavascriptInterface(javascriptInterface, JS_OBJ_NAME)}}

WebView网页打不开原因之一(及自己遇到的一些WebView问题记录)相关推荐

  1. 网页打不开服务器分析,网页打不开是什么原因 网页打不开原因分析【解决方法】...

    网页打不开是什么原因? 现在对于很多人来说是无网络不能活,出门在外第一件事就是问wifi密码,回家第一件事就是开电脑,但要是遇到网页打不开的情况应该怎么办呢? 下面,我们就来看看网络故障排查教程. 1 ...

  2. WebView网页视频统一全屏播放及横竖屏切换

    WebView 支持 Html5 video 进行全屏播放及横竖屏自动切换 1.检查AndroidManifest.xml清单文件,WebView控件所在的Activity配置信息;检查Activit ...

  3. 百度二级网页打不开_网页打不开,原因在这里!

    不知道小伙伴们,有没有遇到这样的问题,网络明明没问题,QQ等工具也可以正常登陆,就是有一部分网页打不开! 打不开一般就俩原因: 1.网站服务器出问题了,网页访问不了! 2.DNS问题,访问网页,错误代 ...

  4. html手机网站打不开,手机网页打不开是什么原因?网络正常但打不开网页怎么回事...

    不知道小伙伴们,有没有遇到这样的问题,网络明明没问题,QQ等工具也可以正常登陆,就是有一部分网页打不开! 打不开一般就俩原因: 1.网站服务器出问题了,网页访问不了! 2.DNS问题,访问网页,错误代 ...

  5. html5页面打不开原因,部分网页打不开是什么原因,详细教您网页打不开怎么解决...

    现在平时没事的时候,就会上上网,看看电影啊什么的等,希望通过它们能好好的放松下疲惫的身心.有用户发现该网页打不开,是不是觉得特别的郁闷呢?别着急,下面,小编给大家介绍网页打不开的解决步骤. 在浏览网站 ...

  6. excel打不开是什么原因_网页打不开是什么原因

    网页打不开是什么原因 1.浏览器"连接"选项设置错误 解决办法:正确设置上网类型.如果是通过代理服务上网的,请正确填写代理服务器的IP地址与端口号;如果不是,请不要勾选" ...

  7. html5页面打不开原因,有网但是网页打不开是什么原因(原因及2种解决方法)

    本来刚交了宽带网络信用卡年费,并且本地连接表明一切正常情况,却偏要打开网站一直发生难题,换了电脑浏览器和重新启动都失效,应该怎么办呢?不必担心!下边小编给大伙儿梳理了一些相关网络链接一切正常可是不能上 ...

  8. 打不开_网页打不开,怎解?

    故障模板中可选的故障现象没有"网页打不开",遇到用户反映网页打不开问题时,我们该如何处理呢? 来,我们先来理理思路:实现访问一个网站(注解:网站是一个整体,网页是一个个体,一个网站 ...

  9. 网页 两秒弹出窗口_电脑网页打不开但qq能用怎么回事

    使用电脑过程中,有时候会遇到很奇怪的情况:电脑网页打不开但qq却能正常使用,让人感到莫名其妙. 那么遇到这种问题,可能是什么原因导致呢?而我们又该怎么解决呢? 通常出现这种情况,大多数情况下是因为dn ...

  10. 电脑网页打不开但qq能上解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 问题描述: 电脑网页打不开但qq能上. 问题原因: 是由于电脑系统的DNS解析出了问题. 解决方法: 首先在键盘上同时按下   ...

最新文章

  1. 将矩阵转为一行_LeetCode 力扣官方题解 | 861. 翻转矩阵后的得分
  2. R-CNN , Fast R-CNN , Faster R-CNN原理及区别
  3. 【转】WebApi中的C#await / async,重点是什么?
  4. ajax请求php省略后缀,如何在PHP中更安全地处理Ajax请求?
  5. AD Framework 单点登录
  6. php xml getattribute,PHP XMLReader getAttribute()用法及代码示例
  7. train_val.prototxt文件和deploy.prototxt文件开头的区别
  8. dom4j获取指定节点值_XML解析之DOM4j以及XPATH技术
  9. 在线HTTP/HTTPS协议GET,POST,RESTful接口测试
  10. ❤️Java面试高频《注解与反射》(建议收藏)❤️
  11. Tomcat的安装、配置常见问题
  12. QT全局钩子监控鼠标和键盘
  13. 象棋军师app已经上线
  14. 【economic】程序员外包平台
  15. 小米6手机投屏到wins 8.1电脑上的软件——scrcpy的安装与使用教程
  16. 将ESXI上的虚拟机导出为OVF模板
  17. 【Mysql数据库】数据库添加索引方式
  18. 文档翻译器怎么用?如何完成整篇word文档翻译
  19. 80后的17条潜规则,你占了几条?
  20. chrom中如何跳过debugger

热门文章

  1. 用户界面、交互体验设计优秀的产品
  2. jQuery轮播图效果+ bxCarousel实现图片滚动切换效果+Mootools Videobox实现视频图片弹出类lightbox效果
  3. Python数据有效性DataValidation模块
  4. 2013MDCC 参观有感
  5. 重命名 VMware ESX 主机
  6. if函数的语法c语言并列,逻辑函数IF的各种使用方法
  7. 元宇宙火了,智能家居跟不跟?
  8. 开箱-艳云脚本云控系统
  9. 前端下载图片(文件)以及打包下载图片(文件)
  10. java-net-php-python-springbot学生奖惩管理系统计算机毕业设计程序