1、首先我们需要判断用户是否开启授权相册(wx.getSetting)
2、如果已经授权,直接保存图片(wx.saveImageToPhotosAlbum)
3、如果没有授权,弹出授权框(wx.authorize),点击确定之后,保存图片,
--- 3.1 点击确定之后,会走success,保存图片
--- 3.2 点击拒绝之后,会走fail,这是会发现当我们再次点击的时候会发现已经弹不出授权框了,
所以我们要在fail里面做一下处理,需要让他弹出授权框
fail处理:
由于wx.openSetting必须通过按钮触发,所以我们当用户拒绝的时候添加一个弹出框(wx.showModal),当用户点击确定的时候弹出授权
var that =this;
// 获取用户是否开启用户授权相册
wx.getSetting({
success(res) {
// 如果没有则获取授权
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
wx.saveImageToPhotosAlbum({
filePath: that.imageTempPath,
success() {
that.$store.commit('set_toast_msg','保存成功');
},
fail() {
that.$store.commit('set_toast_msg','保存失败');
}
})
},
fail() {
wx.showModal({
title: '提示',
content: '若点击不授权,将无法使用保存图片功能',
cancelText:'不授权',
cancelColor:'#999',
confirmText:'授权',
confirmColor:'#f94218',
success(res) {
if (res.confirm) {
wx.openSetting({
success(res) {
console.log(res.authSetting)
}
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
})
} else {
// 有则直接保存
wx.saveImageToPhotosAlbum({
filePath: that.imageTempPath,
success() {
that.$store.commit('set_toast_msg','保存成功');
},
fail() {
that.$store.commit('set_toast_msg','保存失败');
}
})
}
}
})