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及更高版本

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号