小程序下载图片保存到相册功能,首次操作会提示:保存图片或视频到你的相册,有‘拒绝’和‘允许’两个选项,如果选择了拒绝就会保存失败: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) } });