小程序下载图片保存到相册功能,首次操作会提示:保存图片或视频到你的相册,有‘拒绝’和‘允许’两个选项,如果选择了拒绝就会保存失败:saveImageToPhotosAlbum:fail auth deny,那么后续想打开该权限又该怎么操作呢?
这里示例运用的是uniapp框架,如果是用微信小程序官提供的框架,就把uni替换成wx
知识点: uni.openSetting(OBJECT) 调起客户端小程序设置界面,返回用户设置的操作结果。具体可以参考官网说明:https://uniapp.dcloud.io/api/other/setting?id=opensetting
话不多说,直接上示例代码:
let url = 'https://img.book118.com/sr1/M00/3D/00/wKh2AmFgEtWIQtroAAGme53MfZoAAxfXwHgi04AAaaT36.jpeg';
uni.downloadFile({
url: url,
success(res) {
let filePath = res.tempFilePath;
uni.saveImageToPhotosAlbum({
filePath: filePath,
success(res) {
setTimeout(() => {
uni.showToast({
title: '保存成功'
})
}, 10)
},
// 一般情况,选择了拒绝就会进入fail中
fail(err) {
uni.showModal({
title: '提示',
content: '需要您授权保存相册',
showCancel: false,
success(res) {
if (res.confirm) {
uni.openSetting({
success(settingdata) {
if (settingdata.authSetting['scope.writePhotosAlbum']) {
uni.showModal({
title: '提示',
content: '获取权限成功,再次保存图片即可成功',
showCancel: false,
})
} else {
uni.showModal({
title: '提示',
content: '获取权限失败,无法保存到相册',
showCancel: false
})
}
}
})
}
}
})
}
})
},
fail(err) {
setTimeout(() => {
uni.showToast({
icon: 'none',
title: '下载失败:' + JSON.stringify(err.errMsg)
})
}, 10)
}
});