Android CLEARTEXT communication to xxxxxxx not permitted by network security policy

问题:

java.net.UnknownServiceException: CLEARTEXT communication to xxx.xxx.com(域名) not permitted by network security polic

由于 Android P(版本27以上) 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。

如果应用使用的是非加密的明文流量的http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同样地,如果应用嵌套了webview,webview也只能使用https请求。

方法一、
APP改用https请求(这个需要后台协助,花钱买Https证书,简单解决)

方法二、
targetSdkVersion 降到27或以下

方法三、
在清单文件 AndroidManifest.xml 的 application 节点下 添加原来默认为 true,但在 Android 9.0 中默认值改为了 false,因此将配置手动设为 true 即可解决明文传输被限制的问题

方法四、
在 res 下新建一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名称自定) ,该文件内容如下:

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

然后在 Android 的 AndroidManifest.xml 文件下的 application 标签增加以下属性

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

参考
https://stackoverflow.com/questions/60175852/cleartext-communication-not-permitted-by-network-security-policy-working-on-my-m
https://juejin.cn/post/6844903991009083399
https://my.oschina.net/u/2417992/blog/3053591
https://juejin.cn/post/6844903829549350926



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章