微信小程序-同时获取麦克风、相机权限、获取多个权限

代码仓库:https://gitee.com/DerekAndroid/miniProgramAgen/tree/master/pages/authSetting

效果:

wxml:

<button bindtap="checkScopeCamera">申请获取相机权限</button>
<button bindtap="checkScopeCamera">申请获取相机权限-同步函数方式</button>
<button bindtap="checkScope">同时申请获取麦克风、相机权限</button>

js:

// pages/authSetting/authSetting.js
Page({

  data: {
  },

  onLoad: function (options) {
  },

  onShow: function () {
  },

  getSettingRecord(options = { scope: 'scope.record', content: '请前往设置页打开麦克风' }) {
    var self = this;
    return new Promise((resolve, reject) => {
      wx.getSetting({
        success: (res) => {
          let auth = res.authSetting[options.scope]
          console.warn('scope.record=', auth, typeof auth)
          if (auth === true) { // 用户已经同意授权
            resolve(true)
          }
          else if (auth === undefined) {// 首次发起授权
            wx.authorize({
              scope: options.scope,
              success() {
                resolve(true)
              },
              fail(res) {
              }
            })
          }
          else if (auth === false) { // 非首次发起授权,用户拒绝过 => 弹出提示对话框
            wx.showModal({
              title: '授权提示',
              content: options.content,
              success: (tipRes) => {
                if (tipRes.confirm) {
                  wx.openSetting({
                    success: (settingRes) => {
                      if (settingRes.authSetting[options.scope]) {
                        resolve(true)
                      }
                      console.warn('settingRes', settingRes)
                    },
                  })
                }
              }
            })
          }
        },
      })
    })
  },

  //申请获取相机权限
  checkScopeCamera() {
    var options = { scope: 'scope.camera', content: '请前往设置页打开摄像头' }
    var promise2 = this.getSettingRecord(options)
    promise2.then((res) => {
      if (res) {
        wx.showToast({
          title: '相机权限已获取',
        })
      }
    })
  },

  //申请获取相机权限-同步函数方式
  async checkScopeCameraAsync() {
    var options = { scope: 'scope.camera', content: '请前往设置页打开摄像头' }
    var flag = await this.getSettingRecord(options)
    console.warn('flag', flag)
    if (flag) {
      wx.showToast({
        title: '相机权限已获取',
      })
    }
  },

  //检测权限:同时申请获取麦克风、相机权限
  checkScope() {
    return new Promise((resolve, reject) => {
      var promise1 = this.getSettingRecord()
      var options = { scope: 'scope.camera', content: '请前往设置页打开摄像头' }
      var promise2 = this.getSettingRecord(options)
      Promise.all([promise1, promise2]).then(res => {
        console.warn('Promise.all', res);
        if (res[0] && res[1]) {
          console.warn('获取权限成功')
          wx.showToast({
            title: '获取麦克风、相机权限成功',
            icon:'none'
          })
          resolve();
        }
      })
    })
  },

})

...

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是一种轻量级应用程序,可以在微信中直接运行。它提供了许多开发接口,使开发者可以使用微信的各种功能和服务。其中一个常用的功能是获取用户的昵称和头像。 在过去,开发者可以使用wx.getUserInfo接口来获取用户的昵称和头像。然而,由于用户隐私保护的要求日益提高,微信团队对用户信息的获取进行了限制。作为替代方案,微信团队推出了wx.getUserProfile接口。 wx.getUserProfile接口可以在用户同意授权的情况下获取用户的昵称和头像。开发者需要在button组件中设置open-type为getUserProfile,然后在button的bindgetuserinfo事件中获取用户信息。获取到用户信息后,可以通过e.detail.userInfo.nickName和e.detail.userInfo.avatarUrl分别获取用户的昵称和头像地址。 需要注意的是,wx.getUserProfile接口需要用户授权才能获取到用户信息。在用户点击button后,会弹出授权界面,用户可以选择是否授权提供信息。如果用户授权,则可以获取到用户的昵称和头像。如果用户拒绝授权,则无法获取到用户信息。 总结来说,微信小程序最新获取用户昵称和头像的方式是使用wx.getUserProfile接口。开发者需要在button组件中设置open-type为getUserProfile,并在相应的事件中获取用户信息。授权后,可以通过e.detail.userInfo.nickName和e.detail.userInfo.avatarUrl获取用户的昵称和头像地址。同时,需要注意用户授权的情况,用户可以选择是否授权提供信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值