Android 9.0 网络请求的适配问题

        因为谷歌官方要求后期要全面支持api 28的版本,所以这两天一直在做适配android 9.0的工作。本来想着应该没有什么太大的问题,但是做的时候发现,有坑啊!

Google表示,为保证用户数据和设备的安全,针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议
参考博客:https://blog.csdn.net/weixin_42492548/article/details/88715492

网上看到了各位大佬给出的解决方案,大致有四种:

一、targetSdkVersion 改为 28 以下

        问题确实可以得到解决,毕竟编译的 apk 不是 9.0 的版本,但是存在的问题就是,今年11月谷歌上架的最低要求就是28,问题最终还是的改。

二、修改 http 为 https

        这个方式是最安全的,但是改动量可能会比较大,可能还会涉及到各公司底层 SDK 的修改

三、在 res 下新增一个 xml 目录,然后创建一个名为:network_security_config.xml 文件(名字自定),内容如下,大概意思就是允许开启 http 请求:



    

也有添加的内容的版本:



    
        
            
            
        
    

然后在你工程AndroidManifest.xml中application节点下新增:

android:networkSecurityConfig="@xml/network_security_config"

四、直接在AnroidManifest.xml中的application节点下新增:

android:usesCleartextTraffic="true"

上述四种方式,都可以有效的解决使用 http 请求无法获取数据的问题,供君参考。

但是,哎,人生总是充满了转折,我这边只有在9.0以下数据才能正常展示,具体原因还在定位中,公司大佬讲明天帮我看看,希望到时候能解决。


时至今日:
问题解决啦,不是网络请求的问题,而是Apache HttpClient 被弃用了,所以导致我的页面中啥数据都没有。万幸,问题圆满解决。

你可能感兴趣的:(Android 9.0 网络请求的适配问题)