一 小程序动态授权与否对比
未动态授权 | 动态授权 |
---|
 |  |
二 小程序中使用的授权
三 系统默认授权的处理
- 当用户使用了响应的程序(如Camera)时,系统弹出授权弹窗,供用户选择
- 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口
- 如果用户已授权,可以直接调用接口
- 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景
四 开发者处理动态授权(拒绝授权)
4.1 获取用户授权设置
开发者可以使用 wx.getSetting 获取用户当前的授权状态。
4.2 根据授权状态进行处理
五 示例(Camera)
5.1camera.wxml
<camera device-position="back" flash="off" binderror="error" style="width: 100%; height: 300px;"></camera>
<button type="primary" bindtap="takePhoto">拍照</button>
<view>预览</view>
<image mode="widthFix" src="{{src}}"></image>
5.2 camera.js
// pages/camera/camera.js
Page({
onReady(){
wx.getSetting({
complete(res) {
if (typeof (res.authSetting['scope.camera']) != 'undefined' && !res.authSetting['scope.camera']) {
wx.showModal({
title: '打开相机授权',
content: '相机权限已关闭,请到设置界面打开',
success: function (res) {
if (res.confirm) {
console.log('确定')
wx.openSetting({success(res) {wx.navigateBack()}
})
} else {
wx.navigateBack()
console.log('取消')
}
}
})
}
}
})
},
takePhoto() {
const ctx = wx.createCameraContext()
ctx.takePhoto({
quality: 'high',
success: (res) => {
this.setData({
src: res.tempImagePath
})
}
})
},
error(e) {
console.log(e.detail)
}
})
六 参考