@ohos.abilityAccessCtrl (程序访问控制管理)
程序访问控制提供程序的权限校验能力。
说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
支持权限
当前支持跨平台的权限可在系统权限定义列表中查询。
导入模块
import { abilityAccessCtrl } from '@kit.AbilityKit';
abilityAccessCtrl.createAtManager
createAtManager(): AtManager
访问控制管理:获取访问控制模块对象。
支持平台: Android、iOS
系统能力: SystemCapability.Security.AccessToken
返回值:
| 类型 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|
| AtManager | 获取访问控制模块的实例。 | 支持 | 支持 |
示例:
let atManager = abilityAccessCtrl.createAtManager();
AtManager
管理访问控制模块的实例。
checkAccessToken9+
checkAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>
校验应用是否授予权限。使用Promise异步回调。当前跨平台上仅支持校验当前应用的自己的授权状态。
支持平台: Android、iOS
系统能力: SystemCapability.Security.AccessToken
参数:
| 参数名 | 类型 | 必填 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|---|---|
| tokenID | number | 是 | 要校验的目标应用的身份标识。当前跨平台上仅支持校验当前应用自身的授权状态,tokenID可以填任意非0值。 | 支持 | 支持 |
| permissionName | Permissions | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 | 支持 | 支持 |
返回值:
| 类型 | 说明 |
|---|---|
| Promise<GrantStatus> | Promise对象。返回授权状态结果。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
示例:
import { abilityAccessCtrl } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 1;
try {
atManager.checkAccessToken(tokenID, 'ohos.permission.CAMERA').then((data: abilityAccessCtrl.GrantStatus) => {
console.info(`checkAccessToken success, data->${JSON.stringify(data)}`);
}).catch((err: BusinessError) => {
console.error(`checkAccessToken fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.error(`catch err->${JSON.stringify(err)}`);
}
checkAccessTokenSync10+
checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
校验应用是否被授予权限,同步返回结果。当前跨平台上仅支持校验当前应用的自己的授权状态。
支持平台: Android、iOS
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Security.AccessToken
参数:
| 参数名 | 类型 | 必填 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|---|---|
| tokenID | number | 是 | 要校验的目标应用的身份标识。当前跨平台上仅支持校验当前应用自身的授权状态,tokenID可以填任意非0值。 | 支持 | 支持 |
| permissionName | Permissions | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 | 支持 | 支持 |
返回值:
| 类型 | 说明 |
|---|---|
| GrantStatus | 枚举实例,返回授权状态。 |
错误码:
| 错误码ID | 错误信息 |
|---|---|
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
示例:
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 1;
let data: abilityAccessCtrl.GrantStatus = atManager.checkAccessTokenSync(tokenID, 'ohos.permission.CAMERA');
console.info(`data->${JSON.stringify(data)}`);
GrantStatus
表示授权状态的枚举。
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Security.AccessToken
| 名称 | 值 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|---|
| PERMISSION_DENIED | -1 | 表示未授权。 | 支持 | 支持 |
| PERMISSION_GRANTED | 0 | 表示已授权。 | 支持 | 支持 |
requestPermissionsFromUser9+
requestPermissionsFromUser(context: Context, permissionList: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void
用于拉起弹框请求用户授权。使用callback异步回调。
支持平台: Android、iOS
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Security.AccessToken
参数:
| 参数名 | 类型 | 必填 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|---|---|
| context | Context | 是 | 该参数为请求权限的UIAbility的UIAbilityContext。 | 支持 | 支持 |
| permissionList | Array<Permissions> | 是 | 权限名列表,合法的权限名取值可在系统权限定义列表中查询。 | 支持 | 支持 |
| callback | AsyncCallback<PermissionRequestResult> | 是 | 回调函数,返回接口调用是否成功的结果。 | 支持 | 支持 |
错误码:
| 错误码ID | 错误信息 | Android平台 | iOS平台 |
|---|---|---|---|
| 12100001 | The permissionList parameter is invalid. | 支持 | 支持 |
示例:
import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
try {
atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'], (err: BusinessError, data: PermissionRequestResult) => {
if (err) {
console.error(`requestPermissionsFromUser fail, err->${JSON.stringify(err)}`);
} else {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
}
});
} catch(err) {
console.error(`catch err->${JSON.stringify(err)}`);
}
requestPermissionsFromUser9+
requestPermissionsFromUser(context: Context, permissionList: Array<Permissions>) : Promise<PermissionRequestResult>
用于拉起弹框请求用户授权。使用promise异步回调。
支持平台: Android、iOS
原子化服务API: 从API version 11开始,该接口支持在原子化服务中使用。
系统能力: SystemCapability.Security.AccessToken
参数:
| 参数名 | 类型 | 必填 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|---|---|
| context | Context | 是 | 请求权限的UIAbility的UIAbilityContext。 | 支持 | 支持 |
| permissionList | Array<Permissions> | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 | 支持 | 支持 |
返回值:
| 类型 | 说明 | Android平台 | iOS平台 |
|---|---|---|---|
| Promise<PermissionRequestResult> | 返回一个Promise,包含接口的结果。 | 支持 | 支持 |
错误码:
| 错误码ID | 错误信息 | Android平台 | iOS平台 |
|---|---|---|---|
| 12100001 | The permissionList parameter is invalid. | 支持 | 支持 |
示例:
import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
let atManager = abilityAccessCtrl.createAtManager();
try {
let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
atManager.requestPermissionsFromUser(context, ["ohos.permission.CAMERA"]).then((data) => {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
}).catch((err: BusinessError) => {
console.error("data:" + JSON.stringify(err));
})
} catch(err) {
console.error(`catch err->${JSON.stringify(err)}`);
}