requestPermission
2022-06-13 15:17 更新
向系统请求某个或多个权限。为帮助您更好的使用该接口,论坛维护了一个示例。
对于iOS平台,第一次请求权限时会弹出权限选择框,如果用户选择了不允许,那么再次请求权限时将不会再弹出选择框(定位权限如果用户选择了下次询问,则会再次弹出),而是直接跳转到系统设置中该应用的设置界面。
对于Android平台,只要用户没有选择“不再提示”,那么再次请求权限时都将继续弹出权限选择框;如果用户选择了“不再提示”,那么再次请求权限时将不会再弹出选择框,而是直接跳转到系统设置的该应用权限设置界面。
requestPermission({params}, callback(ret,err))
params
list:
- 类型:字符串数组
- 默认值:无
- 描述:权限列表。
- 取值范围:
camera //相机/拍照/录像
contacts //联系人读取/写入
contacts-r //仅联系人读取。iOS中等同于contacts。
contacts-w //仅联系人写入。iOS中等同于contacts。
microphone //使用麦克风录制音频
photos //访问相册|本地存储空间。Android上等同于storage。
photos-w //仅写入相册|本地存储空间。Android上等同于storage-w。
location //定位
locationAlways //后台定位,只支持iOS
locationFullAccuracy //临时精确定位,请求时需传入purposeKey参数,申请的临时精确定位只在App生命周期内有效。注意:仅当location、locationAlways权限返回的reducedAccuracy字段为true时才请求临时精确定位,若用户继续选择关闭精确定位时回调方法不会被执行,所以此权限应和其它权限分开进行请求。只支持iOS 14及以上系统。
notification //状态栏通知
calendar //日历读取/写入。只支持Android
calendar-r //仅日历读取
calendar-w //仅日历写入
phone //直接拨打电话/获取手机号码|IMEI。只支持Android
phone-call //仅直接拨打电话
phone-r //仅获取手机号码|IMEI
phone-r-log //读取通话记录
phone-w-log //写入通话记录
sensor //传感器.只支持Android
sms //读取短信/后台发送短信。只支持Android
sms-s //仅后台发送短信
sms-r //仅读取短信
storage //读取/写入|相册|多媒体|本地存储空间。只支持Android
storage-r //仅读取|相册|多媒体|文件|本地存储空间
storage-w //仅写入|相册|多媒体|文件|本地存储空间
code:
- 类型:数字
- 默认值:无
- 描述:请求跟踪码,用于回调结果,只支持Android。
purposeKey:
- 类型:字符串
- 默认值:无
- 描述:请求locationFullAccuracy权限的意图字段,在云编译界面添加“精确定位(临时)”权限时输入purposeKey及对应的权限使用描述,系统通过purposeKey找到对应的权限使用描述,然后在开启精确定位的弹框中将描述语展示给用户。
callback
ret:
- 类型:JSON对象
- 内部字段:
{
list:[{
name: //权限名,字符串类型
granted: //是否允许,布尔类型
}],
never: //用户是否选择了“不再提示“,只支持Android,布尔类型
code: //请求跟踪码,只支持Android,数字类型。
}
示例代码
var permission = 'camera';
var resultList = api.hasPermission({
list: [permission]
});
if (resultList[0].granted) {
// 已授权,可以继续下一步操作
api.alert({
msg: '已授权'
});
} else {
api.confirm({
msg: '应用需要您的授权才能访问相机',
buttons: ['取消', '去设置']
}, function(ret) {
if (ret.buttonIndex == 2) {
api.requestPermission({
list: [permission],
}, function(res) {
if (res.list[0].granted) {
// 已授权,可以继续下一步操作
api.alert({
msg: '已授权'
});
}
});
}
});
}
可用性
iOS系统,Android系统
可提供的1.2.76及更高版本
以上内容是否对您有帮助:
更多建议: