收藏
回答

wx.authorize调取录音权限真机上会弹出两次弹窗(所有手机),请问?

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({})

}

})

}

})

}

})


回答关注问题邀请回答
收藏

2 个回答

  • 这个世界
    这个世界
    2022-11-21

    这个问题很好重现,使用多媒体组件。

    比如 你在wxml里面使用 audio 和 camera,系统就会自动调起一次权限询问,如果这时候你在js里面在调用一次

    wx.authorize({
              scope: 'scope.camera',
              success () {
                
              }
            })
    

    获取权限的方法。那肯定会弹出两次权限授权窗口了。

    2022-11-21
    有用
    回复 1
    • 🍃
      🍃
      2024-12-26
      怎么解决啊
      2024-12-26
      回复
  • 林子
    林子
    2020-04-01

    你代码没有完全展示调用逻辑,调用录音api也会弹窗授权框,同时你也执行了验证权限就会弹两次,你可以用Promise 将验权异步改同步

    2020-04-01
    有用
    回复 4
    • Mr.zhao
      Mr.zhao
      2020-04-01
      不行 还是重复弹出,是长按事件的时候先判断是否获取了权限
      2020-04-01
      回复
    • 林子
      林子
      2020-04-02回复Mr.zhao
      你可以试试做一个代码片段,我们帮助你分析一下代码;
      另外可以进入页面获取录音权限这样能简化一下逻辑;
      2020-04-02
      回复
    • Mr.zhao
      Mr.zhao
      2020-04-02回复林子
      我就是说直接进入页面获取录音权限,但是产品不同意  必须在用户用的时候才获取
      2020-04-02
      回复
    • 林子
      林子
      2020-04-02回复Mr.zhao
      建议你做一个代码片段,首先肯定微信api没有问题,你是所有手机都这样问题应该是你逻辑问题,多打一些log注解开始录音,真机调试多试试
      2020-04-02
      回复
登录 后发表内容
问题标签