uniapp 安卓 savevideotophotosalbum相册没有是怎么回事?
在使用uniapp开发安卓应用时,调用saveVideoToPhotosAlbum方法保存视频到相册,但相册中并没有显示保存的视频文件。请问可能是什么原因导致的?需要检查哪些权限或路径设置?
2 回复
在UniApp中,安卓设备调用saveVideoToPhotosAlbum API保存视频到相册失败或找不到,通常由以下原因导致:
- 权限问题:安卓6.0+需要动态申请存储权限(WRITE_EXTERNAL_STORAGE)。
- 文件路径无效:视频文件路径错误或文件不存在。
- 相册刷新延迟:系统相册未及时更新,需手动刷新。
- 路径限制:部分安卓机型对特定目录(如临时路径)不支持直接保存。
解决方案:
-
动态申请权限:
// 在调用保存前检查并申请权限 uni.authorize({ scope: 'scope.writePhotosAlbum', success() { // 权限已授予,执行保存 saveVideo(); }, fail() { // 引导用户手动开启权限 uni.showModal({ content: '需要相册权限才能保存视频,请前往设置开启', success: (res) => { if (res.confirm) { uni.openSetting(); } } }); } }); function saveVideo() { uni.saveVideoToPhotosAlbum({ filePath: '视频文件路径(如临时路径或本地路径)', success: () => { uni.showToast({ title: '保存成功' }); }, fail: (err) => { console.error('保存失败:', err); uni.showToast({ title: '保存失败', icon: 'none' }); } }); } -
检查文件路径:
- 确保
filePath为有效路径(如通过uni.chooseVideo选择的临时路径tempFilePath)。 - 示例:
uni.chooseVideo({ success: (res) => { const tempFilePath = res.tempFilePath; // 使用tempFilePath调用saveVideoToPhotosAlbum } });
- 确保
-
刷新相册(部分机型需手动):
- 保存后提示用户到相册中查看,或使用
uni.scanCode(仅部分支持)触发媒体库更新。
- 保存后提示用户到相册中查看,或使用
-
使用绝对路径:
- 避免使用临时缓存路径,可先将文件移动到持久化目录(如
uni.downloadFile下载到本地)。
- 避免使用临时缓存路径,可先将文件移动到持久化目录(如
注意事项:
- 测试路径:在真机调试中确认文件可访问。
- Android版本差异:高版本(Android 10+)可能需使用媒体存储API,但UniApp已做兼容。
- 文件格式:确保视频格式(如MP4)被系统支持。
若问题持续,检查控制台错误日志,或尝试用原生插件(如Gallery)增强功能。


