部分接口在使用之前,需要经过用户授权同意,按照使用范围,这些接口被分成多个scope。用户按scope范围进行授权,此时,该scope对应的所有接口均可以被调用。
在调用这类接口前,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权,导致接口调用失败。声明文件中的字段说明及样例可查阅:在配置文件中声明权限。
开发者在对应业务功能执行前,必须先向用户发起授权申请。一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除元服务。
此类接口调用时,可能出现以下情况:
授权弹窗会展示元服务在元服务用户隐私保护指引中填写的说明,请按照要求填写。
用户可以在元服务设置界面(「右上角」 - 「设置」 - 「管理」)中控制对该元服务的授权状态。
开发者可以调用 has.openSetting 打开设置界面,引导用户开启授权。
has.openSetting({
success: (res) => {
console.info('openSetting success', res);
},
fail: (err) => {
console.error('openSetting fail', err);
},
complete: (res) => {
console.info('openSetting complete', res);
}
}); 开发者在调用需授权API之前,必须先 has.authorize,向用户发起授权请求。
has.authorize({
scope: 'scope.userLocation',
success: (res) => {
console.info('authorize success', res);
},
fail: (err) => {
console.error('authorize fail', err);
},
complete: (res) => {
console.info('authorize complete', res);
}
}); 当前发起authorize请求前,开发者还需要在应用配置文件中声明所需要的HarmonyOS系统的权限,具体可参考声明权限。
| scope | 对应接口 | 描述 | 所需权限 |
|---|---|---|---|
| scope.userLocation | 精确地理位置 | ohos.permission.LOCATION ohos.permission.APPROXIMATELY_LOCATION | |
| scope.userFuzzyLocation | 模糊地理位置 | ohos.permission.APPROXIMATELY_LOCATION | |
| scope.camera | camera组件 | 摄像头 | ohos.permission.CAMERA |
| scope.addPhoneCalendar | 添加日历 | ohos.permission.READ_CALENDAR ohos.permission.WRITE_CALENDAR | |
| scope.bluetooth | 蓝牙-通用下的所有接口 蓝牙-低功耗中心设备下的所有接口 | 蓝牙 | ohos.permission.ACCESS_BLUETOOTH |
| scope.record | camera组件 | 麦克风 | ohos.permission.MICROPHONE |