安卓从最近列表选择单张/多张图片时出现图片损坏、Glide报错问题
安卓系统从最近文件列表选图触发Glide报错的修复方案
问题表现
在安卓系统中操作时,从最近文件列表选择单张图片或者多张图片,均会出现图片损坏的问题。
该错误大多在从最近文件夹选择图片时出现
报错日志如下:
class com.bumptech.glide.load.engine.GlideException: Received null model
原因分析
该报错的核心原因是从最近文件列表拿到的Uri属于媒体库的content://类型Uri,如果你直接解析Uri的path字段获取文件路径,会拿到无效值,导致传给Glide的加载参数为null,最终抛出该异常。
修复方案
- 优先直接向Glide传入原始Uri加载,不要做多余的路径转换,示例写法:
Glide.with(context).load(uri).into(targetImageView) - 若业务需要拿到本地文件路径,需通过ContentResolver查询媒体数据库获取对应文件的真实存储路径,禁止直接截取Uri的path字段作为文件路径
- 针对Android 10及以上系统,可在AndroidManifest.xml的application节点临时添加
android:requestLegacyExternalStorage="true"属性适配分区存储,避免无文件读取权限导致的路径获取失败 - 每次加载前先校验传入Glide的加载源是否为空,为空时提前走异常分支处理,避免崩溃
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

