1.在用户要使用到摄像头时调用摄像头接口
2.用户同意即可使用
3.用户不同意弹出小程序设置页面,可以让用户自行开启需要的权限
4.用户点击前往设置自行开启
5.用户拒绝授权无法使用摄像头,用户扫描失败弹出扫描失败窗口
1.data中添加属性控制按钮绑定方法的状态
2.当识别二维码失败时取消方法的绑定,让按钮失效
例子:
wxml文件
<view bind:tap="{{btnClicked ? '' : 'codeBtn'}}">一键扫码</view>
js文件
Page({
data: {
btnClicked: false,
},
codeBtn() {
this.setData({
btnClicked: true
})
wx.authorize({
scope: 'scope.camera',
success: () => {
// 用户同意授权,调用摄像头接口
wx.scanCode({
success: (res) => {
if (res != "" && res != null && res != 'undefined') {
if (res.errMsg == "scanCode:ok" && res.path != "") {
const searchChar = "=";
const result = res.path.split(searchChar)[1];
this.goToIndex(result);
this.boolScanView = false
} else {
wx.showToast({
title: '未识别到二维码',
icon: 'error',
duration: 2000
})
this.setData({
btnClicked: false
})
}
} else {
wx.showToast({
title: '未识别到二维码',
icon: 'error',
duration: 2000
})
this.setData({
btnClicked: false
})
}
},
fail: (res) => {
wx.showToast({
title: '未识别到二维码',
icon: 'error',
duration: 2000
})
this.setData({
btnClicked: false
})
}
});
},
fail: (res) => {
this.setData({
btnClicked: false
})
// 用户拒绝授权,提示用户开启摄像头权限
wx.showModal({
title: '提示',
content: '需要获取用户位置信息权限',
cancelText: '暂不设置',
confirmText: '前往设置',
confirmColor: '#3CC51F',
success(res) {
if (res.confirm) {
wx.openSetting(); // 打开小程序设置页面,可以让用户开启需要的权限
}
}
})
}
});
},
})