新写项目运行到Android9手机上的时候(测试机为华为手机) 提示了如下信息
java.net.UnknownServiceException: CLEARTEXT communication to *********** not permitted by network security policy
附上一张debug模式下的报错信息
出现原因:
在Android P系统的设备上,如果应用使用的是非加密的明文流量的http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同理 若应用内使用WebView加载网页 则加载网页也需要是https请求
解决方式
解决方式有三种
(1)APP整体网络请求改用https
(2)将targetSdkVersion 版本下调至27以下
(3)更改项目网络安全配置
我使用的是更改网络完全配置 具体说明一下怎么更改app网络安全配置
一:在res目录下新建xml文件夹 在xml文件夹内新建名为
network_config(名字非固定)的xml
附加内容为
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
二:在AndroidManifest中增加属性
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>
以上两个步骤就完成了网络安全配置 问题已解决
当然 前两种方法也可行 就比较简单易懂了 可自行选择使用哪种解决方案
祝好运