小程序获取手机相机权限
使用到的方法:
1.uni.getSetting
2.uni.authorize
3.uni.showActionSheet
4.uni.showModal
5.uni.openSetting
uni.getSetting({ success: (res) => { let authStatus = res.authSetting['scope.album'] && res.authSetting['scope.camera']; // 如果没有授权相册 if(!authStatus){ //向用户发起授权请求 uni.authorize({ scope: "scope.camera", success: () => { uni.showActionSheet({ title: '选择上传类型', itemList: ['图片', '视频'], success: res => { console.log(res); if (res.tapIndex == 0) { this.chooseImages(); } else { this.chooseVideo(); } } }); }, fail: () => { uni.showModal({ title: '授权失败', content: '需要从您的相机或相册获取图片,请在设置界面打开相关权限', success: (res) => { if (res.confirm) { uni.openSetting() } } }) } }) }else{ uni.showActionSheet({ title: '选择上传类型', itemList: ['图片', '视频'], success: res => { console.log(res); if (res.tapIndex == 0) { this.chooseImages(); } else { this.chooseVideo(); } } }); } } })
1.uni.getSetting
获取用户的当前设置。

uni.getSetting({
success(res) {
console.log(res.authSetting)
}
})
2.uni.authorize
官方解释:提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSetting和uni.openSetting使用。
我的理解:比如发起获取定位的请求,询问用户是否同意授权,用户不同意好理解,同意了也不会打开本地的定位,需要用户手动开启定位或者搭配uni.openSetting使用。感觉就是一个提示功能。如果我的理解有误,还请不吝赐教。

注意:scope.userLocation 权限需要在 manifest.json 配置 permission

或者

3.uni.showActionSheet
从底部向上弹出操作菜单

uni.showActionSheet({ itemList: ['A', 'B', 'C'], success: function (res) { console.log('选中了第' + (res.tapIndex + 1) + '个按钮'); }, fail: function (res) { console.log(res.errMsg); } });
4.uni.showModal
显示模态弹窗,可以只有一个确定按钮,也可以同时有确定和取消按钮。类似于一个API整合了 html 中:alert、confirm。

uni.showModal({ title: '提示', content: '这是一个模态弹窗', success: function (res) { if (res.confirm) { console.log('用户点击确定'); } else if (res.cancel) { console.log('用户点击取消'); } } });
5.uni.openSetting
调起客户端小程序设置界面,返回用户设置的操作结果。

uni.openSetting({
success(res) {
console.log(res.authSetting)
}
});
浙公网安备 33010602011771号