根据网络安全配置-

从Android 9(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载

还可以看看-https: //koz.io/android-m-and-the-war-on-cleartext-traffic/

Codelabs解释- https://codelabs.developers.google.com/codelabs/android-network-security-config/index.html

如果应用使用的是非加密的明文流量的http请求,则会导致该请求无法成功,而https请求则不会受影响。

针对这个问题,我看了一下共有三种解决方法。

1)使用Https请求替换Http请求。既然官方都说了用Https更安全,那就替换成Https。

2)将targetSdkVersion降到27以下。曲线救国,既然从28开始不支持Http,那么我就用28以下的版本。

3)更改网络安全配置

第一种与第三种是网上比较多多的解决方案,一个就是使用更安全的https,另一个方法就是在清单文件中做一下配置,使用未加密信息传输。

<application
....
android:usesCleartextTraffic="true"
....>
....
</application>

解决办法:根本上选项一即可,其他解决办法是在不得已的情况下

选项1 -

从根本解决问题,用安全的HTTPS协议  eg: "https://" 替换 "http://"

首先尝试用“ https://”而不是“ http://”打入URL

选项2-

创建文件res / xml / network_security_config.xml-

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example.com(to be adjusted)</domain>
</domain-config>
</network-security-config>

在application节点添加  android:networkSecurityConfig="@xml/network_security_config" 引用

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>

选项3-

android:usesCleartextTraffic Doc

在 AndroidManifest.xml 文件中的application节点添加 android:usesCleartextTraffic="true"

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
  ...>
...
</application>
</manifest>

正如@ david.s的答案所指出的,这android:targetSandboxVersion也可能是一个问题-

根据清单文件-

android:targetSandboxVersion

此应用要使用的目标沙箱。沙盒版本号越高,安全级别越高。默认值为1;默认值为1。您也可以将其设置为2。将此属性设置为2会将应用程序切换到其他SELinux沙箱。以下限制适用于2级沙箱:

  • usesCleartextTraffic网络安全配置中的默认值为false。
  • 不允许共享Uid。

所以选项4-

如果有android:targetSandboxVersion<manifest>则减少到1

AndroidManifest.xml-

<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>

4

  • 在最新的P版本中似乎还必须再迈出一步?请参阅我的问题stackoverflow.com/questions/51770323/…–spartygw

  • 将选项1从domain-config更改为base-config可以解决此问题 
     
    针对此问题的最佳解决方案:使用HTTPS。此答案中提到的选项只能是不得已的方法。 

 


(选项二)第二种办法

<application
android:networkSecurityConfig="@xml/network_security_config"
...>

和:

res / xml / network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>

(选项二)第三种方法

<application
....
android:usesCleartextTraffic="true"
....>

更新:如果您具有网络安全性配置,例如:android:networkSecurityConfig="@xml/network_security_config"

如上所示,无需将明文流量设置为true,而使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
....
....
</domain-config> <base-config cleartextTrafficPermitted="false"/>
</network-security-config>

以上是开发中遇到的问题,后期有时间还会继续整理,或者您有更好的解决方法,添加更加完善,不胜感激。欢迎留言交流,

书山有路勤为径,学海无涯苦作舟!!!

WebView无法加载页面报错 net:ERR_CLEARTEXT_NOT_PERMITTED 还有webView加载网页后出现ERR_UNKNOWN_URL_SCHEME的更多相关文章

  1. 分析https网页加载http资源导致的页面报错原因及其解决方案

    https网页加载http资源导致的页面报错及解决方案 https是当下的网站的主流趋势,甚至像苹果这样的大公司,则完全要求用户必须使用https地址. 然而对于以前http链接来说,我们往往就存在一 ...

  2. C#拖曳控件加载,bll报错问题

    C#拖曳控件加载,bll报错问题,加载时实例如化bll时加上一个判断 if (!(GetService(typeof(IDesignerHost)) != null            || Sys ...

  3. jsp页面报错(一)

    jsp页面报错 1.错误位置 <form action="../page/areaType.action" method="POST"> <j ...

  4. SharePoint2007 管理中心TimerJob”计时器作业定义”页面报错

    部署完成自己开发的TimerJob,发现"计时器作业定义"页面报错,进不去了,但是TimerJob可以正常运行,这样,肯定不行的,估计还是代码有问题,把这个脆弱的sharepoin ...

  5. 新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo

    新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo ...

  6. Jenkins安装时Web页面报错提示离线安装

    先跳过所有. 方法1 先看它的提示:”参考离线Jenkins安装文档“发现链接点不开,我还以为是被墙了呢,FQ以后还是打不开.看来这个参考文档是没有用滴.点击配置HTTP代理跳出如下界面:安装Jenk ...

  7. 解决在Vue项目中时常因为代码缩进导致页面报错的问题

    前言 如果我们初次使用vue-cli来构建单页SPA应用,在撸代码的过程中有可能会遇到这种因为代码缩进导致 页面报错的问题,导致我们烦不胜烦.接下来我们就来看一看如何解决这个小问题... erro原因 ...

  8. 数据库到jsp页面报错(一)

    数据库到jsp页面报错(一) 这个错误的确比较坑. 控制台:     页面: 解决: 神坑啊!!!

  9. PHP开启页面报错的代码

    PHP开启页面报错的方法很简单,在<?php内加入下面的代码就可以了: <?php ini_set("display_errors", "On"); ...

  10. https的页面内嵌入http页面报错的问题

    1.https的页面内嵌入http页面报错 在HTTPS的页面上嵌入http的页面时,浏览器会直接报错.比如在HTTPS页面上用 iframe 直接嵌入一个 http 页面,比如我们可以在百度上直接嵌 ...

随机推荐

  1. # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布

    v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...

  2. IQueryable和IEnumerable学习

    IQueryable和IEnumerable区别 开始了解IQueryable和IEnumerable前,我们先看一下源码 由上面的图片可以得知IQueryable接口继承自IEnumerable接口 ...

  3. github 2fa中国认证及TOTP App

    Because of your contributions on GitHub, two-factor authentication will be required for your account ...

  4. 我为什么从Windows转到Linux?

    本文来自读者投稿! 大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步! 喔,看到这个标题千万不要以 ...

  5. 【四】AI Studio 项目详解【VisualDL工具、环境使用说明、脚本任务、(四)图形化任务、在线部署及预测】PARL

    相关文章 [一]-环境配置+python入门教学 [二]-Parl基础命令 [三]-Notebook.&pdb.ipdb 调试 [四]-强化学习入门简介 [五]-Sarsa&Qlear ...

  6. 6.5 Windows驱动开发:内核枚举PspCidTable句柄表

    在 Windows 操作系统内核中,PspCidTable 通常是与进程(Process)管理相关的数据结构之一.它与进程的标识和管理有关,每个进程都有一个唯一的标识符,称为进程 ID(PID).与之 ...

  7. 5.2 Windows驱动开发:内核取KERNEL模块基址

    模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程 ...

  8. PE格式:新建节并插入DLL

    首先老样子,我们先来到PE节表位置处,并仿写一个.hack的节,该节大小为0x1000字节,在仿写前我们需要先来计算出.hack的虚拟偏移与实际偏移,先来查询一下当前节表结构,如下: 接着我们通过公式 ...

  9. Cheat Engine 官方教程汉化

    CE修改器官方教程汉化版,区别于前款教程,官方教程中使用的是Tutorial64位程序,如下是经过翻译后的官方文档. 第一步:欢迎 当教程启动时,您应该会看到类似的东西,您只需在阅读帮助文本后单击&q ...

  10. Java-Stream-flatMap

    Leave leave1 = new Leave("1","1",new Date(),CollUtil.newArrayList("A", ...