HarmonyOS API:@ohos.abilityAccessCtrl (程序访问控制管理)
版本:v3.1 Beta
@ohos.abilityAccessCtrl (程序访问控制管理)
更新时间: 2023-02-17 09:19
程序访问控制提供程序的权限管理能力,包括鉴权、授权和取消授权等。
说明
本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
导入模块
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
abilityAccessCtrl.createAtManager
createAtManager(): AtManager
访问控制管理:获取访问控制模块对象。
系统能力: SystemCapability.Security.AccessToken
返回值:
类型 | 说明 |
获取访问控制模块的实例。 |
示例:
let atManager = abilityAccessCtrl.createAtManager();
AtManager
管理访问控制模块的实例。
checkAccessToken9+
checkAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>
校验应用是否授予权限。使用Promise异步回调。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。 |
permissionName | Permissions | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 |
返回值:
类型 | 说明 |
Promise<GrantStatus> | Promise对象。返回授权状态结果。 |
错误码:
以下错误码的详细介绍请参见程序访问控制错误码。
错误码ID | 错误信息 |
12100001 | The parameter is invalid. The tokenID is 0 |
示例:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
try {
atManager.checkAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => {
console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
}).catch((err) => {
console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
verifyAccessTokenSync9+
verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
校验应用是否被授予权限,同步返回结果。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
tokenID | number | 是 | 要校验应用的身份标识。 |
permissionName | Permissions | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 |
返回值:
类型 | 说明 |
枚举实例,返回授权状态。 |
错误码:
以下错误码的详细介绍请参见程序访问控制错误码。
错误码ID | 错误信息 |
12100001 | The parameter is invalid. The tokenID is 0 |
示例:
let atManager = abilityAccessCtrl.createAtManager();
let tokenID = 0;
let data = atManager.verifyAccessTokenSync(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
console.log(`data->${JSON.stringify(data)}`);
verifyAccessToken9+
verifyAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>
校验应用是否授予权限。使用Promise异步回调。
说明
建议使用checkAccessToken替代。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。 |
permissionName | Permissions | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 |
返回值:
类型 | 说明 |
Promise<GrantStatus> | Promise对象。返回授权状态结果。 |
示例:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
requestPermissionsFromUser9+
requestPermissionsFromUser(context: Context, permissions: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void;
用于拉起弹框请求用户授权。使用callback异步回调。
模型约束:此接口仅可在Stage模型下使用。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
context | Context | 是 | 请求权限的应用ability上下文context。 |
permissions | Array<Permissions> | 是 | 权限名列表,合法的权限名取值可在系统权限定义列表中查询。 |
callback | AsyncCallback<PermissionRequestResult> | 是 | 回调函数,返回接口调用是否成功的结果。 |
错误码:
以下错误码的详细介绍请参见程序访问控制错误码。
错误码ID | 错误信息 |
12100001 | Parameter invalid. |
示例:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
try {
atManager.requestPermissionsFromUser(this.context, ["ohos.permission.CAMERA"], (err, data)=>{
console.info("data:" + JSON.stringify(data));
console.info("data permissions:" + data.permissions);
console.info("data authResults:" + data.authResults);
});
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
requestPermissionsFromUser9+
requestPermissionsFromUser(context: Context, permissions: Array<Permissions>) : Promise<PermissionRequestResult>;
用于拉起弹框请求用户授权。使用promise异步回调。
模型约束:此接口仅可在Stage模型下使用。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
context | Context | 是 | 请求权限的应用ability上下文context。 |
permissions | Array<Permissions> | 是 | 需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。 |
返回值:
类型 | 说明 |
Promise<PermissionRequestResult> | 返回一个Promise,包含接口的结果。 |
错误码:
以下错误码的详细介绍请参见程序访问控制错误码。
错误码ID | 错误信息 |
12100001 | Parameter invalid. |
示例:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
try {
atManager.requestPermissionsFromUser(this.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) => {
console.info("data:" + JSON.stringify(err));
})
} catch(err) {
console.log(`catch err->${JSON.stringify(err)}`);
}
verifyAccessToken(deprecated)
verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus>
校验应用是否授予权限。使用Promise异步回调。
说明
从API version 9开始不再维护,建议使用checkAccessToken替代。
系统能力: SystemCapability.Security.AccessToken
参数:
参数名 | 类型 | 必填 | 说明 |
tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。 |
permissionName | string | 是 | 需要校验的权限名称。 |
返回值:
类型 | 说明 |
Promise<GrantStatus> | Promise对象。返回授权状态结果。 |
示例:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
let atManager = abilityAccessCtrl.createAtManager();
let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId
let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
promise.then(data => {
console.log(`promise: data->${JSON.stringify(data)}`);
});
GrantStatus
表示授权状态的枚举。
系统能力: SystemCapability.Security.AccessToken
名称 | 值 | 说明 |
PERMISSION_DENIED | -1 | 表示未授权。 |
PERMISSION_GRANTED | 0 | 表示已授权。 |