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
相关产品推荐
相关产品推荐

