React Native中Expo MediaLibrary.getAssetsAsync传入album无法获取相册资源
修复方案
1. 显式指定查询媒体类型与分页参数
MediaLibrary.getAssetsAsync() 默认仅查询图片资源,未指定媒体类型时会自动过滤视频文件,同时需显式传入分页拉取数量参数避免结果被截断。
修复后的代码示例:
let album = await MediaLibrary.getAlbumAsync("GrabTube") console.log(album ) let assets = await MediaLibrary.getAssetsAsync({ album: album, mediaType: [MediaLibrary.MediaType.video], // 指定查询视频类型资源 first: album.assetCount // 按相册实际资源数拉取,避免分页遗漏 }) console.log(assets)
2. 兼容相册参数传入格式
部分Expo SDK版本对album对象的解析存在兼容问题,可直接传入相册ID替代完整album对象:
let assets = await MediaLibrary.getAssetsAsync({ album: album.id, mediaType: [MediaLibrary.MediaType.video], first: 100 })
3. 权限校验
- 安卓13及以上版本需确认已申请
READ_MEDIA_VIDEO权限,安卓13以下版本需申请READ_EXTERNAL_STORAGE权限 - iOS端需确认用户授予了全部照片访问权限,而非仅授权访问选中的照片
- 执行查询前可先调用
MediaLibrary.requestPermissionsAsync()确认权限状态为granted后再执行查询逻辑
内容的提问来源于stack exchange,提问作者Anas Ikhlas
相关产品推荐
相关产品推荐

