You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 14(API 34)无法打开相册选图?原API33代码适配求助

Android 14(API 34)相册多图选择失效问题修复

问题原因

Android 14 对 ACTION_PICK 的多文件选择逻辑做了调整,原实现方式不再被系统默认支持,且官方更推荐使用 ACTION_OPEN_DOCUMENT 来实现文件(图片)选择功能,尤其是多文件场景。

修复方案

替换原 Intent 的 Action 为 ACTION_OPEN_DOCUMENT,补充必要的权限标记并调整参数设置顺序,具体代码如下:

// 构建多图选择Intent
Intent photoPickerIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
// 设置选择类型为图片
photoPickerIntent.setType("image/*");
// 允许选择多个文件
photoPickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
// 添加权限标记,确保能读取选中的文件
photoPickerIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

if (photoPickerIntent.resolveActivity(getPackageManager()) != null) {
    startActivityForResult(photoPickerIntent, PICK_IMAGE_MULTIPLE);
}

额外兼容说明

如果需要同时兼容 Android 4.4(API 19)以下版本,可以通过版本判断分支处理:

Intent photoPickerIntent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    photoPickerIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    photoPickerIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
} else {
    photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

if (photoPickerIntent.resolveActivity(getPackageManager()) != null) {
    startActivityForResult(photoPickerIntent, PICK_IMAGE_MULTIPLE);
}

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:33:25