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

Android 13下Expo Image Picker无法访问全部相册的解决方案咨询

Android 13下访问全部相册的解决方案

核心原因

Android 13(API 33)引入了媒体权限细分机制,原有的READ_EXTERNAL_STORAGE权限被拆分为READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO三类。同时系统默认的媒体选择器(即launchImageLibrary调用的组件)默认仅展示用户常用相册,无法直接访问全部文件夹。

具体解决方法

1. 申请完整媒体访问权限(API 33+适配)

在AndroidManifest.xml中声明所需权限:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<!-- 如需访问视频,额外添加以下权限 -->
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

在代码中动态申请权限:

// Kotlin示例
private const val REQUEST_CODE_MEDIA = 1001

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    requestPermissions(
        arrayOf(Manifest.permission.READ_MEDIA_IMAGES),
        REQUEST_CODE_MEDIA
    )
} else {
    requestPermissions(
        arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
        REQUEST_CODE_MEDIA
    )
}

2. 自定义相册界面替代系统选择器

若要访问所有文件夹(包括系统隐藏相册或非媒体目录),无法依赖launchImageLibrary,需基于MediaStore实现自定义遍历逻辑:

  • 通过MediaStore.Images.Media.EXTERNAL_CONTENT_URI查询所有图片,提取RELATIVE_PATH字段获取文件夹路径
  • 去重整理所有文件夹,再分别加载对应文件夹下的媒体文件
    示例代码片段:
// 查询所有图片及所属文件夹
val projection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.RELATIVE_PATH,
    MediaStore.Images.Media.DISPLAY_NAME
)

contentResolver.query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    projection,
    null,
    null,
    null
)?.use { cursor ->
    val pathColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.RELATIVE_PATH)
    val folders = mutableSetOf<String>()
    
    while (cursor.moveToNext()) {
        val fullPath = cursor.getString(pathColumn)
        val folderPath = fullPath.substring(0, fullPath.lastIndexOf('/'))
        folders.add(folderPath)
    }
    // folders集合即为所有包含图片的文件夹路径
}

3. 注意事项

  • Android 13及以上版本,即使申请了READ_MEDIA_IMAGES,系统默认媒体选择器仍可能限制展示的相册数量,这是系统默认行为,只能通过自定义界面绕过
  • 除非你的应用属于文件管理器类,否则不要申请MANAGE_EXTERNAL_STORAGE权限,该权限会导致Google Play审核不通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:32:05