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

React Native中Expo-image-picker在Android无法直接访问相册如何解决

Expo Image Picker Android 无法直接调起相册解决方案

问题根因

Android 10及以上系统引入分区存储机制,若expo-image-picker未明确指定媒体选择类型,会默认触发系统通用文件选择器,而非专门的相册媒体选择器。

修复步骤

  • 调整调用方法的入参,明确指定媒体类型为图片
    调用launchImageLibraryAsync时必须传入mediaTypes参数为ImagePicker.MediaTypeOptions.Images,触发系统相册选择器,参考代码:
    import * as ImagePicker from 'expo-image-picker';
    
    const pickImage = async () => {
      // 先申请相册权限
      const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync();
      if (permissionResult.status !== 'granted') {
        alert('请授予相册访问权限后重试');
        return;
      }
    
      const pickerResult = await ImagePicker.launchImageLibraryAsync({
        mediaTypes: ImagePicker.MediaTypeOptions.Images,
        allowsEditing: true,
        aspect: [1, 1],
        quality: 0.7,
      });
    
      if (!pickerResult.canceled) {
        const selectedImage = pickerResult.assets[0];
        // 后续处理选中图片的逻辑
      }
    };
    
  • 适配高版本Android权限配置
    在项目根目录的app.json中添加Android权限声明,适配不同版本系统的权限要求:
    {
      "expo": {
        "android": {
          "permissions": [
            "READ_EXTERNAL_STORAGE",
            "READ_MEDIA_IMAGES"
          ]
        }
      }
    }
    
  • 升级依赖并重新编译
    若配置后仍未生效,建议将expo-image-picker升级到14.0.0及以上稳定版本,修改配置后需重新执行expo prebuild并编译Android安装包,热更新无法使权限配置生效。

注意事项

若你的App需要同时支持选择视频,可将mediaTypes参数改为ImagePicker.MediaTypeOptions.All,系统会自动拉起同时包含图片和视频的媒体选择页,不会跳转到通用文件存储目录。


内容的提问来源于stack exchange,提问作者Kim Mỹ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:24:06