目录

授权

部分接口在使用之前,需要经过用户授权同意,按照使用范围,这些接口被分成多个scope。用户按scope范围进行授权,此时,该scope对应的所有接口均可以被调用。

在调用这类接口前,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权,导致接口调用失败。声明文件中的字段说明及样例可查阅:在配置文件中声明权限。

开发者在对应业务功能执行前,必须先向用户发起授权申请。一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除元服务。

此类接口调用时,可能出现以下情况:

授权弹窗会展示元服务在元服务用户隐私保护指引中填写的说明,请按照要求填写。

申请权限的方式

[h2]引导用户在“设置”授权

用户可以在元服务设置界面(「右上角」 - 「设置」 - 「管理」)中控制对该元服务的授权状态。

开发者可以调用 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);
  }
});

[h2]发起授权请求

开发者在调用需授权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);
  }
});

scope列表

当前发起authorize请求前,开发者还需要在应用配置文件中声明所需要的HarmonyOS系统的权限,具体可参考声明权限。

scope 对应接口 描述 所需权限
scope.userLocation

has.getLocation

MapContext.moveToLocation

has.onWifiConnected

has.getWifiList

has.getConnectedWifi

has.connectWifi

精确地理位置

ohos.permission.LOCATION

ohos.permission.APPROXIMATELY_LOCATION

scope.userFuzzyLocation

has.getFuzzyLocation

has.startLocationUpdate

has.startLocationUpdateBackground

模糊地理位置 ohos.permission.APPROXIMATELY_LOCATION
scope.camera

camera组件

CameraContext.takePhoto

CameraContext.startRecord

has.startLivenessDetection

摄像头 ohos.permission.CAMERA
scope.addPhoneCalendar

has.addPhoneCalendar

has.addPhoneRepeatCalendar

添加日历

ohos.permission.READ_CALENDAR

ohos.permission.WRITE_CALENDAR

scope.bluetooth

蓝牙-通用下的所有接口

蓝牙-低功耗中心设备下的所有接口

蓝牙 ohos.permission.ACCESS_BLUETOOTH
scope.record

camera组件

CameraContext.startRecord

CameraContext.takePhoto

has.startRecord

RecorderManager.start

RecorderManager.pause

RecorderManager.resume

RecorderManager.stop

麦克风 ohos.permission.MICROPHONE