适配

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

2019-12-19  本文已影响0人  dlihasa

前言

在开发老项目过程中,在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

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

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

<application
        ****
        android:networkSecurityConfig="@xml/network_config"
        ****
>
</application>

第二种

服务器接口都采用https协议

第三种(不推荐)

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

上一篇 下一篇

猜你喜欢

热点阅读