Android API31选图后裁剪加载失败及URI异常问题咨询
Android 图片裁剪API31失败问题解答
Q1:为何URI发生变化,出现陌生前缀?
- 你调用
Intent.ACTION_PICK后唤起的是Google Photos应用,它会返回自身内容提供器的专属URI,而非原始的下载管理器URI。com.google.android.apps.photos.contentprovider是Google Photos的内容提供器标识,这种嵌套格式的URI是Photos内部用来映射媒体文件的标准格式,属于正常现象,并非“异常URI”。
Q2:该URI是否导致裁剪启动失败?
- 是的。API Level 31的系统裁剪组件对Google Photos返回的这种嵌套格式URI兼容性较差,即便你通过
ACTION_PICK获取了临时访问权限,系统裁剪器也无法正确解析这个URI并读取对应的媒体文件,最终触发“Error, could not load media”错误。
Q3:为何在API Level 33的AVD上应用运行正常?
- Android 13(API Level 33)优化了媒体内容的访问机制:
- 系统裁剪组件对第三方应用(如Google Photos)的特殊格式URI做了兼容性适配,能正确解析嵌套结构的URI;
- API33的媒体权限模型更宽松,裁剪器获取媒体内容的权限流程更顺畅;
- Google Photos在高版本系统上的URI处理逻辑也和系统做了更好的适配,确保裁剪器能正常读取文件。
内容的提问来源于stack exchange,提问作者Johnson
相关产品推荐
相关产品推荐

