wx.getSetting({
success(res) {
if (!res.authSetting['scope.record']) {
wx.authorize({
scope: 'scope.record',
success() {
console.log("录音授权成功");
}, fail() {
console.log("录音授权失败");
wx.showModal({
title: '提示',
content: '您未授权录音,将无法使用语音描述功能,是否重新授权?',
showCancel: false,//是否显示取消按钮
confirmText: "授权",//默认是“确定”
confirmColor: 'skyblue',//确定文字的颜色
success(res) {
wx.openSetting({})
}
})
}
})
}
})
这个问题很好重现,使用多媒体组件。
比如 你在wxml里面使用 audio 和 camera,系统就会自动调起一次权限询问,如果这时候你在js里面在调用一次
wx.authorize({ scope: 'scope.camera', success () { } })
获取权限的方法。那肯定会弹出两次权限授权窗口了。
你代码没有完全展示调用逻辑,调用录音api也会弹窗授权框,同时你也执行了验证权限就会弹两次,你可以用Promise 将验权异步改同步
另外可以进入页面获取录音权限这样能简化一下逻辑;