如何用Glide加载http://开头的JPEG图片?当前仅支持PNG与HTTPS JPEG
解决HTTP协议JPG图片无法加载的问题
我之前刚好踩过这个坑,核心原因是Android 9(API 28)及以上版本默认禁用了HTTP明文网络请求——这就是为什么HTTPS的JPG能正常加载,HTTP的却不行,和图片格式(PNG/JPG)、CircleImageView控件本身没啥关系。
下面给你两种可行的解决方案,优先推荐第一种,更规范安全:
方案1:配置网络安全配置(推荐)
这是官方推荐的解决方式,既能允许HTTP请求,又能灵活控制权限范围:
- 在你的项目
res/xml目录下创建network_security_config.xml文件(如果xml目录不存在就新建一个),写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <!-- 全局允许明文HTTP请求 --> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
如果不想全局放开,只想允许特定域名的HTTP请求(更安全),可以改成这样:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <!-- 替换成你需要加载HTTP图片的域名,includeSubdomains=true表示包含子域名 --> <domain includeSubdomains="true">example.com</domain> </domain-config> </network-security-config>
- 打开
AndroidManifest.xml,在<application>标签里添加这个配置引用:
<application android:name=".MyApplication" ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
方案2:降低targetSdkVersion(仅临时测试用)
如果只是临时调试需要,可以把app/build.gradle(Module级别)里的targetSdkVersion降到27及以下:
android { ... defaultConfig { ... targetSdkVersion 27 ... } }
不过这个方法不推荐用于正式版本,会降低应用的安全性和系统兼容性。
最后再确认下Glide的代码,你当前的写法没问题,Glide默认支持HTTP和HTTPS请求,不需要额外配置。
内容的提问来源于stack exchange,提问作者johnrao07
相关产品推荐
相关产品推荐

