Android 处理高版本API加载图片失败(图片无法加载,显示默认图)

一、简介

由于android api版本越来越高,在使用过程中可能会出现一些未预想的问题,记录一下近期在高版本模拟器上面遇到的一个问题

 

二、问题描述

笔者在高版本模拟器上面运行应用程序是发现,图片无法加载,显示默认加载图片,感到纳闷,在api24,7.0的系统上运行是可以正常加载出来的, 为何在28,9.0的系统上运行会无法加载图片

查阅资料发现,

为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。

简单介绍:高版本api在http协议存在安全性,访问http协议时被认为不安全

 

 

三、问题解决

如何解决这个问题,在这里我推荐两种解决方案

1、应用请求网络改为https,当然,这个需要后台配合支持

2、在你们manifest文件下application节点配置参数,android:usesCleartextTraffic="true"

原本默认为true,但在9.0系统中被改为false,因此,手动改回true即可更改访问受限

Android 处理高版本API加载图片失败(图片无法加载,显示默认图)

 

四、问题深究

网络安全性配置特性让应用可以在一个安全的声明性配置文件中自定义其网络安全设置,而无需修改应用代码。可以针对特定域和特定应用配置这些设置。此特性的主要功能如下所示:

1、自定义信任锚:针对应用的安全连接自定义哪些证书颁发机构 (CA) 值得信任。例如,信任特定的自签署证书或限制应用信任的公共 CA 集。
2、仅调试重写:在应用中以安全方式调试安全连接,而不会增加已安装用户的风险。
3、明文通信选择退出:防止应用意外使用明文通信。
4、证书固定:将应用的安全连接限制为特定的证书。

参考资料:https://developer.android.google.cn/training/articles/security-config.html