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

Expo React Native下MediaLibrary.getAssetsAsync无法返回媒体资源问题

Expo React Native MediaLibrary.getAssetsAsync返回空资源问题修复方案

以下是经过验证的可行修复方案:

  • 指定明确的mediaType参数
    MediaLibrary.getAssetsAsync()默认仅查询图片类型资源,如果你需要读取视频,必须手动指定媒体类型参数,修改代码如下:
let assets = await MediaLibrary.getAssetsAsync({
  album: album,
  mediaType: MediaLibrary.MediaType.video // 如需同时查询图片和视频可以传 [MediaLibrary.MediaType.photo, MediaLibrary.MediaType.video]
})

这是该问题最常见的触发原因,修改后即可正常匹配到相册内的视频资源。

  • 检查媒体读取权限配置与授权状态

    1. Android 13及以上版本需要单独申请READ_MEDIA_VIDEO权限,不能只申请旧版的存储权限
    2. iOS端需要确认Info.plist中已配置NSPhotoLibraryUsageDescription权限说明
    3. 调用接口前先校验权限状态,若为limited(iOS有限相册权限)需要确认用户已将目标文件加入授权范围
  • 调整入参格式避免版本兼容问题
    部分旧版本的expo-media-library对传入album对象的兼容性较差,可以改为传入相册ID替代完整对象:

let assets = await MediaLibrary.getAssetsAsync({
  album: album.id,
  mediaType: MediaLibrary.MediaType.video
})
  • 确认媒体文件已被系统媒体库收录
    如果目标文件是刚存入相册的新文件,可能还未被系统媒体库扫描索引,可先调用MediaLibrary.scanAssetsAsync()传入文件本地路径触发扫描,再执行查询操作。

  • 校验依赖版本匹配性
    确认expo-media-library版本与当前项目使用的Expo SDK版本完全匹配,不匹配的版本会出现接口返回异常问题,可执行npx expo install expo-media-library重新安装匹配版本,再清理项目缓存后重试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:02