小程序-保存图片到相册拒绝授权后,重新调用授权保存图片到相册
让我先大小3声“哈哈哈”酷毙了
写小程序时,用到授权时,有些用户可能好奇心重,总会出其不意的乱点,若是程序员没有考虑到,那这时BUG就出现了~~作为前端开发的我心累呀~
下面举一个例子: 保存图片到相册时,点击按钮“保存”,之后会现出来一个微信小程序自带的弹窗----询问用户是否要保存。你说既然先点了保存那就是确定要保存了嘛。但是弹窗中有一个选项“拒绝”,我X,一大批脏话脱口而出!!!!!!!!!!!!
正常情况下,点了“拒绝”后,完了,完了,完了!!!!弹窗关闭,之后若是再次点击“保存”按钮,没反应了。好焦急,好难受。
这时,重新授权就需要用到了:
wx.openSetting({ })
TMMD,我以为这样就ok了。哪知道我又遇到了问题。重新授权代码完成后,开发工具上是能够重授权了,哪知道我手机真机测试时,一点反应都没有,而且还没有报错。把我那个焦急的呀。怎么办呢,不修复了?就这样?这怎么可能,若真这样,客户发现问题后不就会天天呼我,修复BUG。那咋行。
现在我把我的代码弄下来,记录起来,可能会帮到跟我遇到同样问题的小同伴。也能帮我做个记录。
1.开发工具上的代码(ok)
wx.saveImageToPhotosAlbum({
filePath: canvasImg,
success: function (res) {
wx.showToast({
title: '保存成功',
image: "../images/nologo.png",
duration: 1500,
})
},
fail: function (res) {
console.log(res)
if (res.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
console.log("打开设置窗口");
wx.openSetting({
success(settingdata) {
console.log(settingdata)
if (settingdata.authSetting["scope.writePhotosAlbum"]) {
console.log("获取权限成功,再次点击图片保存到相册")
} else {
console.log("获取权限失败")
}
}
})
}
})
2.下面的代码是真机上成功运行的(ok)
wx.saveImageToPhotosAlbum({
filePath: canvasImg,
success: function (res) {
wx.showToast({
title: '保存成功',
image: "../images/nologo.png",
duration: 1500,
})
},
fail: function (res) {
console.log(res)
if (res.errMsg === "saveImageToPhotosAlbum:fail:auth denied") {
console.log("打开设置窗口");
wx.openSetting({
success(settingdata) {
console.log(settingdata)
if (settingdata.authSetting["scope.writePhotosAlbum"]) {
console.log("获取权限成功,再次点击图片保存到相册")
} else {
console.log("获取权限失败")
}
}
})
}
}
})