Android9.0适配访问Http协议的服务器端接口

前言

在开发老项目过程中,在Android9.0的手机上报了一个CLEARTEXT communication to * not permitted by network的错误,检查其他非9.0手机无问题,该手机前一天也无问题,手机也未有过升级等情况,那么问题出在哪里了呢?好吧,是因为我修改了项目的targetSdkVersion到28了,Android P系统限制了明文流量的网络请求,并且测试服务一直使用的http协议,okhttp3这就会抛出该异常,在项目targetSdkVersion是28以下的时候,当然不需要支持9.0的特性,就像你的targetSdkVersion低于23的时候不需要添加运行时权限,所以修改targetSdkVersion之前运行在9.0手机上也没问题

三种解决方法

第一种

首先在res目录下新建xml文件夹,文件夹里面创建network_security_config.xml 文件


image.png

编辑network_security_config.xml文件,在文件中设置cleartextTrafficPermitted为true



    

然后在 AndroidManifest.xml 的application 标签加上



第二种

服务器接口都采用https协议

第三种(不推荐)

targetSdkVersion设置为小于28的某一个版本

你可能感兴趣的:(Android9.0适配访问Http协议的服务器端接口)