微信小程序,保存图片到相册授权被拒绝后重新拉取授权wx.opensetting的使用方法
当第一次的时候使用wx.getSetting的时候会发现没有scope.writePhotosAlbum这个对象,所以并不知道是否授权在这里插入图片描述
<view class="ui-share-box">
<view class="ui-thumb">
<image mode="scaleToFill" src="{{shareThumb}}"></image>
</view>
<view class="ui-button-box main-justify">
<button class="main-center cross-center"
@tap.stop="getSaveImage">
<text class="icon-share"></text>保存图片
</button>
<button class="main-center cross-center"
open-type="share"><text class="icon-share"></text>分享给好友</button>
</view>
</view>
<view class="ui-toast-box" :class="{'is-show': isShowToast}">
<view class="ui-toast-content dir-top main-justify">
<view class="ui-content">
<view class="cell-title">温馨提示</view>
<view class="cell-content">去设置允许访问相册</view>
</view>
<button open-type="openSetting"
bindopensetting='getSetting'>确定</button>
</view>
</view>
data = {
isShowToast: false,
shareThumb: '', // 最后生成的分享图片
}
/**
* 获取微信设置信息
* @private
*/
__wxSetting() {
let self = this
// 检测设置中是否允许保存到相册中去
wx.getSetting({
success(res) {
// 第一,直接调取保存,系统会自动调取授权
if (_.isUndefined(res.authSetting['scope.writePhotosAlbum'])) {
self.__saveImage()
} else if (!res.authSetting['scope.writePhotosAlbum']){ // 不授权
self.isShowToast = true
} else { // 授权
self.__saveImage()
}
self.$apply()
}
})
}
/**
* 保存图片
* @private
*/
__saveImage() {
let self = this
wx.saveImageToPhotosAlbum({
filePath: self.shareThumb, // 这里是用canvas生成之后保存下来的图片地址
success(res) {
wx.showModal({
title: '温馨提示',
content: '已保存到系统相册中',
showCancel: false
})
},
fail(res) {
wx.showModal({
title: '温馨提示',
content: '保存失败',
showCancel: false
})
}
})
}
methods = {
/**
* 保存图片
* @private
*/
getSaveImage() {
let self = this
self.__wxSetting()
},
/**
* 询问是否授权访问相册
* @private
*/
getSetting(event) {
let self = this
// 对用户的设置进行判断,如果没有授权,即使用户返回到保存页面,显示的也是“去授权”按钮;同意授权之后才显示保存按钮
self.isShowToast = false
if (!event.detail.authSetting['scope.writePhotosAlbum']) {
wx.showModal({
title: '温馨提示',
content: '你关闭了访问相册的权限,无法保存,请允许访问相册',
showCancel: false
})
} else {
wx.showToast({
icon: 'success',
title: `授权成功`,
success(res) {
self.__saveImage()
}
})
}
}
}