我在uniapp中遇到了版本bug,我使用uni.saveImageToPhotosAlbum接口将图片保存到相册,安卓13版本以上可以,安卓9、10也可以正常保存,安卓11保存到本地相册失败
{"errMsg":"saveImageToPhotosAlbum:fail No Permission","errCode":12,"code":12},这是失败回调返回的数据,我现在已经打开了这个app的所有权限,还是报错
我在uniapp中遇到了版本bug,我使用uni.saveImageToPhotosAlbum接口将图片保存到相册,安卓13版本以上可以,安卓9、10也可以正常保存,安卓11保存到本地相册失败
{"errMsg":"saveImageToPhotosAlbum:fail No Permission","errCode":12,"code":12},这是失败回调返回的数据,我现在已经打开了这个app的所有权限,还是报错
解决方案步骤:
添加 Android 11 适配配置
在 manifest.json
中添加以下配置:
"android": {
"compileSdkVersion": 30,
"targetSdkVersion": 30,
"permissionExternalStorage": {
"request": "once",
"prompt": "保存图片需要访问相册权限"
}
}
动态权限请求逻辑
// 保存前检查权限
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
this.saveImage();
},
fail: (err) => {
uni.showModal({
content: '需要相册权限才能保存图片',
success: (res) => {
if (res.confirm) {
uni.openSetting();
}
}
});
}
});
saveImage() {
uni.saveImageToPhotosAlbum({
filePath: '/temp/test.jpg',
success: () => {
uni.showToast({ title: '保存成功' });
},
fail: (err) => {
console.error('最终保存失败:', err);
}
});
}
文件路径处理技巧
// 建议使用临时文件路径
const tempFilePath = plus.io.convertLocalFileSystemURL(filePath);
核心问题原因:
补充说明:
WRITE_EXTERNAL_STORAGE
权限在 AndroidManifest.xml 中存在10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决