js-apis-abilityAccessCtrl.md 37.8 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.abilityAccessCtrl (程序访问控制管理)
2 3

程序访问控制提供程序的权限管理能力,包括鉴权、授权和取消授权等。
Z
zengyawen 已提交
4

Z
zengyawen 已提交
5
> **说明:**
Z
zengyawen 已提交
6 7 8 9
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

Z
zhouyan 已提交
10
```ts
Z
zengyawen 已提交
11 12 13 14 15 16 17 18 19
import abilityAccessCtrl from '@ohos.abilityAccessCtrl'
```

## abilityAccessCtrl.createAtManager

createAtManager(): AtManager

访问控制管理:获取访问控制模块对象。

20 21 22
**系统能力:** SystemCapability.Security.AccessToken


Z
zengyawen 已提交
23 24 25 26 27 28 29 30
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| [AtManager](#atmanager) | 获取访问控制模块的实例。 |

**示例:**

Z
zhouyan 已提交
31 32
```ts
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
Z
zengyawen 已提交
33 34 35 36 37 38
```

## AtManager

管理访问控制模块的实例。

C
chennian 已提交
39
### checkAccessToken<sup>9+</sup>
Z
zengyawen 已提交
40

L
lsq 已提交
41
checkAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;
Z
zengyawen 已提交
42

C
chennian 已提交
43
校验应用是否授予权限。使用Promise异步回调。
Z
zengyawen 已提交
44

45 46
**系统能力:** SystemCapability.Security.AccessToken

Z
zengyawen 已提交
47 48 49 50
**参数:**

| 参数名   | 类型                 | 必填 | 说明                                       |
| -------- | -------------------  | ---- | ------------------------------------------ |
F
fanchenxuan 已提交
51
| tokenID   |  number   | 是   | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。             |
L
lsq 已提交
52
| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zengyawen 已提交
53 54 55 56 57

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
C
chennian 已提交
58
| Promise&lt;GrantStatus&gt; | Promise对象。返回授权状态结果。 |
Z
zengyawen 已提交
59

C
chennian 已提交
60 61 62
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
63

C
chennian 已提交
64 65
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
66
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
C
chennian 已提交
67

Z
zengyawen 已提交
68 69
**示例:**

Z
zhouyan 已提交
70
```ts
C
chennian 已提交
71
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
72
import { BusinessError } from '@ohos.base';
C
chennian 已提交
73

Z
zhouyan 已提交
74 75
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
C
chennian 已提交
76
try {
Z
zhouyan 已提交
77
    atManager.checkAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
C
chennian 已提交
78
        console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
Z
zhouyan 已提交
79
    }).catch((err: BusinessError) => {
C
chennian 已提交
80 81 82 83 84
        console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`);
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zengyawen 已提交
85 86
```

Z
zhouyan 已提交
87 88
### verifyAccessTokenSync<sup>9+</sup>

L
lsq 已提交
89
verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
Z
zhouyan 已提交
90 91 92 93 94 95 96 97 98

校验应用是否被授予权限,同步返回结果。

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名   | 类型                 | 必填 | 说明                                       |
| -------- | -------------------  | ---- | ------------------------------------------ |
F
fanchenxuan 已提交
99
| tokenID   |  number   | 是   | 要校验应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。              |
L
lsq 已提交
100
| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zhouyan 已提交
101 102 103 104 105 106 107

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 |

C
chennian 已提交
108 109 110
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
111

C
chennian 已提交
112 113
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
114
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
C
chennian 已提交
115

Z
zhouyan 已提交
116 117
**示例:**

Z
zhouyan 已提交
118 119 120 121 122 123
```ts
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let data: abilityAccessCtrl.GrantStatus = atManager.verifyAccessTokenSync(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS');
Z
zhouyan 已提交
124 125 126
console.log(`data->${JSON.stringify(data)}`);
```

Z
zengyawen 已提交
127 128
### grantUserGrantedPermission

L
lsq 已提交
129
grantUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlags: number): Promise&lt;void&gt;
Z
zengyawen 已提交
130

C
chennian 已提交
131
授予应用user grant权限。使用Promise异步回调。
Z
zengyawen 已提交
132

C
chennian 已提交
133
**系统接口:** 此接口为系统接口。
134

C
chennian 已提交
135
**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS,仅系统应用可用。
136 137

**系统能力:** SystemCapability.Security.AccessToken
Z
zengyawen 已提交
138 139 140 141 142

**参数:**

| 参数名    | 类型                | 必填 | 说明                                                         |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
F
fanchenxuan 已提交
143
| tokenID      | number              | 是   | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。            |
L
lsq 已提交
144
| permissionName | Permissions              | 是   | 被授予的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zhouyan 已提交
145
| permissionFlags  | number | 是   | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 |
Z
zengyawen 已提交
146 147 148 149 150

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
C
chennian 已提交
151
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zengyawen 已提交
152

C
chennian 已提交
153 154 155
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
156

C
chennian 已提交
157 158
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
159
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the flags value is invalid. |
F
fanchenxuan 已提交
160 161 162 163
| 12100002 | The specified tokenID does not exist. |
| 12100003 | The specified permission does not exist. |
| 12100006 | The application specified by the tokenID is not allowed to be granted with the specified permission. Either the application is a sandbox or the tokenID is from a remote device. |
| 12100007 | Service is abnormal. |
C
chennian 已提交
164

Z
zengyawen 已提交
165 166
**示例:**

Z
zhouyan 已提交
167
```ts
C
chennian 已提交
168
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
169
import { BusinessError } from '@ohos.base';
C
chennian 已提交
170

Z
zhouyan 已提交
171 172 173
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionFlags: number = 1;
C
chennian 已提交
174
try {
C
chennian 已提交
175
    atManager.grantUserGrantedPermission(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS', permissionFlags).then(() => {
C
chennian 已提交
176
        console.log('grantUserGrantedPermission success');
Z
zhouyan 已提交
177
    }).catch((err: BusinessError) => {
C
chennian 已提交
178 179 180 181 182
        console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`);
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zengyawen 已提交
183 184 185 186
```

### grantUserGrantedPermission

L
lsq 已提交
187
grantUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlags: number, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
188

C
chennian 已提交
189
授予应用user grant权限。使用callback异步回调。
Z
zengyawen 已提交
190

C
chennian 已提交
191
**系统接口:** 此接口为系统接口。
192

C
chennian 已提交
193
**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS,仅系统应用可用。
194 195

**系统能力:** SystemCapability.Security.AccessToken
Z
zengyawen 已提交
196 197 198 199 200

**参数:**

| 参数名    | 类型                | 必填 | 说明                          |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
F
fanchenxuan 已提交
201
| tokenID      | number              | 是   | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。|
L
lsq 已提交
202
| permissionName | Permissions              | 是   | 被授予的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zhouyan 已提交
203
| permissionFlags  | number | 是   | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 |
204
| callback | AsyncCallback&lt;void&gt; | 是 | 授予应用user grant权限。当授予权限成功时,err为undefined;否则为错误对象。 |
C
chennian 已提交
205 206 207 208

**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
209

C
chennian 已提交
210 211
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
212
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the flags value is invalid. |
C
chennian 已提交
213 214
| 12100002 | The specified tokenID does not exist. |
| 12100003 | The specified permission does not exist. |
F
fanchenxuan 已提交
215 216
| 12100006 | The application specified by the tokenID is not allowed to be granted with the specified permission. Either the application is a sandbox or the tokenID is from a remote device. |
| 12100007 | Service is abnormal. |
Z
zengyawen 已提交
217 218 219

**示例:**

Z
zhouyan 已提交
220
```ts
C
chennian 已提交
221
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
222
import { BusinessError } from '@ohos.base';
C
chennian 已提交
223

Z
zhouyan 已提交
224 225 226
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionFlags: number = 1;
C
chennian 已提交
227
try {
Z
zhouyan 已提交
228
    atManager.grantUserGrantedPermission(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS', permissionFlags, (err: BusinessError, data: void) => {
C
chennian 已提交
229 230 231 232 233 234 235 236 237
        if (err) {
            console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`);
        } else {
            console.log('grantUserGrantedPermission success');
        }
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zengyawen 已提交
238 239 240 241
```

### revokeUserGrantedPermission

L
lsq 已提交
242
revokeUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlags: number): Promise&lt;void&gt;
Z
zengyawen 已提交
243

C
chennian 已提交
244
撤销应用user grant权限。使用Promise异步回调。
Z
zengyawen 已提交
245

C
chennian 已提交
246
**系统接口:** 此接口为系统接口。
247

C
chennian 已提交
248
**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。
249 250

**系统能力:** SystemCapability.Security.AccessToken
Z
zengyawen 已提交
251 252 253 254 255

**参数:**

| 参数名    | 类型                | 必填 | 说明                                                         |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
F
fanchenxuan 已提交
256
| tokenID      | number              | 是   | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。           |
L
lsq 已提交
257
| permissionName | Permissions              | 是   | 被撤销的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zhouyan 已提交
258
| permissionFlags  | number | 是   | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 |
Z
zengyawen 已提交
259 260 261 262 263

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
C
chennian 已提交
264
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zengyawen 已提交
265

C
chennian 已提交
266 267 268
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
269

C
chennian 已提交
270 271
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
272
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the flags value is invalid. |
F
fanchenxuan 已提交
273 274 275 276
| 12100002 | The specified tokenID does not exist. |
| 12100003 | The specified permission does not exist. |
| 12100006 | The application specified by the tokenID is not allowed to be revoked with the specified permission. Either the application is a sandbox or the tokenID is from a remote device. |
| 12100007 | Service is abnormal. |
C
chennian 已提交
277

Z
zengyawen 已提交
278 279
**示例:**

Z
zhouyan 已提交
280
```ts
C
chennian 已提交
281
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
282
import { BusinessError } from '@ohos.base';
C
chennian 已提交
283

Z
zhouyan 已提交
284 285 286
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionFlags: number = 1;
C
chennian 已提交
287
try {
C
chennian 已提交
288
    atManager.revokeUserGrantedPermission(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS', permissionFlags).then(() => {
C
chennian 已提交
289
        console.log('revokeUserGrantedPermission success');
Z
zhouyan 已提交
290
    }).catch((err: BusinessError) => {
C
chennian 已提交
291 292 293 294 295
        console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`);
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zengyawen 已提交
296 297 298 299
```

### revokeUserGrantedPermission

L
lsq 已提交
300
revokeUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlags: number, callback: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
301

C
chennian 已提交
302
撤销应用user grant权限。使用callback异步回调。
Z
zengyawen 已提交
303

C
chennian 已提交
304
**系统接口:** 此接口为系统接口。
305

C
chennian 已提交
306
**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。
307 308

**系统能力:** SystemCapability.Security.AccessToken
Z
zengyawen 已提交
309 310 311 312 313

**参数:**

| 参数名    | 类型                | 必填 | 说明                          |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
F
fanchenxuan 已提交
314
| tokenID      | number              | 是   | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。           |
L
lsq 已提交
315
| permissionName | Permissions              | 是   | 被撤销的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zhouyan 已提交
316
| permissionFlags  | number | 是   | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 |
317
| callback | AsyncCallback&lt;void&gt; | 是 | 撤销应用user grant权限。当撤销权限成功时,err为undefined;否则为错误对象。 |
C
chennian 已提交
318 319 320 321

**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
322

C
chennian 已提交
323 324
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
325
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256, or the flags value is invalid. |
C
chennian 已提交
326 327
| 12100002 | The specified tokenID does not exist. |
| 12100003 | The specified permission does not exist. |
F
fanchenxuan 已提交
328 329
| 12100006 | The application specified by the tokenID is not allowed to be revoked with the specified permission. Either the application is a sandbox or the tokenID is from a remote device. |
| 12100007 | Service is abnormal. |
Z
zengyawen 已提交
330 331 332

**示例:**

Z
zhouyan 已提交
333
```ts
C
chennian 已提交
334
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
335
import { BusinessError } from '@ohos.base';
C
chennian 已提交
336

Z
zhouyan 已提交
337 338 339
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionFlags: number = 1;
C
chennian 已提交
340
try {
Z
zhouyan 已提交
341
    atManager.revokeUserGrantedPermission(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS', permissionFlags, (err: BusinessError, data: void) => {
C
chennian 已提交
342 343 344 345 346 347 348 349 350
        if (err) {
            console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`);
        } else {
            console.log('revokeUserGrantedPermission success');
        }
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zengyawen 已提交
351 352 353 354
```

### getPermissionFlags

L
lsq 已提交
355
getPermissionFlags(tokenID: number, permissionName: Permissions): Promise&lt;number&gt;
Z
zengyawen 已提交
356

C
chennian 已提交
357
获取指定应用的指定权限的flag。使用Promise异步回调。
Z
zengyawen 已提交
358

C
chennian 已提交
359
**系统接口:** 此接口为系统接口。
360

C
chennian 已提交
361
**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS or ohos.permission.GRANT_SENSITIVE_PERMISSIONS or ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。
362

363 364
**系统能力:** SystemCapability.Security.AccessToken

Z
zengyawen 已提交
365 366 367 368
**参数:**

| 参数名    | 类型                | 必填 | 说明                          |
| --------- | ------------------- | ---- | ------------------------------------------------------------ |
F
fanchenxuan 已提交
369
| tokenID      | number              | 是   | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。            |
L
lsq 已提交
370
| permissionName | Permissions              | 是   | 查询的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
Z
zengyawen 已提交
371 372 373 374 375

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
C
chennian 已提交
376
| Promise&lt;number&gt; | Promise对象。返回查询结果。 |
Z
zengyawen 已提交
377

C
chennian 已提交
378 379 380
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
381

C
chennian 已提交
382 383
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
384
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
F
fanchenxuan 已提交
385 386
| 12100002 | The specified tokenID does not exist. |
| 12100003 | The specified permission does not exist. |
F
fanchenxuan 已提交
387
| 12100006 | The operation is not allowed. Either the application is a sandbox or the tokenID is from a remote device. |
F
fanchenxuan 已提交
388
| 12100007 | Service is abnormal. |
C
chennian 已提交
389

Z
zengyawen 已提交
390 391
**示例:**

Z
zhouyan 已提交
392
```ts
C
chennian 已提交
393
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
394
import { BusinessError } from '@ohos.base';
C
chennian 已提交
395

Z
zhouyan 已提交
396 397
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
C
chennian 已提交
398
try {
Z
zhouyan 已提交
399
    atManager.getPermissionFlags(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: number) => {
C
chennian 已提交
400
        console.log(`getPermissionFlags success, data->${JSON.stringify(data)}`);
Z
zhouyan 已提交
401
    }).catch((err: BusinessError) => {
C
chennian 已提交
402 403 404 405 406
        console.log(`getPermissionFlags fail, err->${JSON.stringify(err)}`);
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
L
l00520400 已提交
407 408
```

Z
zhouyan 已提交
409
### getVersion<sup>9+</sup>
Z
zhouyan 已提交
410 411 412

getVersion(): Promise&lt;number&gt;

C
chennian 已提交
413
获取当前权限管理的数据版本。使用Promise异步回调。
Z
zhouyan 已提交
414

C
chennian 已提交
415
**系统接口:** 此接口为系统接口。
Z
zhouyan 已提交
416 417 418 419 420 421 422

**系统能力:** SystemCapability.Security.AccessToken

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
C
chennian 已提交
423
| Promise&lt;number&gt; | Promise对象。返回查询到的版本号。 |
Z
zhouyan 已提交
424 425 426

**示例:**

Z
zhouyan 已提交
427 428 429 430
```ts
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
C
chennian 已提交
431
let promise = atManager.getVersion();
Z
zhouyan 已提交
432
promise.then((data: number) => {
Z
zhouyan 已提交
433 434 435 436
    console.log(`promise: data->${JSON.stringify(data)}`);
});
```

437 438
### on<sup>9+</sup>

L
lsq 已提交
439
on(type: 'permissionStateChange', tokenIDList: Array&lt;number&gt;, permissionList: Array&lt;Permissions&gt;, callback: Callback&lt;PermissionStateChangeInfo&gt;): void;
440

C
chennian 已提交
441
订阅指定tokenId列表与权限列表的权限状态变更事件。
442

W
wuliushuan 已提交
443 444 445 446
允许指定tokenId列表与权限列表订阅多个callback。

不允许存在交集的tokenId列表与权限列表订阅相同callback。

C
chennian 已提交
447
**系统接口:** 此接口为系统接口。
448

C
chennian 已提交
449
**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS,仅系统应用可用。
450 451 452 453 454 455 456 457

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名             | 类型                   | 必填 | 说明                                                          |
| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
| type               | string                | 是   | 订阅事件类型,固定为'permissionStateChange',权限状态变更事件。  |
F
fanchenxuan 已提交
458
| tokenIDList        | Array&lt;number&gt;   | 是   | 订阅的tokenId列表,为空时表示订阅所有的应用的权限状态变化。        |
L
lsq 已提交
459
| permissionList | Array&lt;Permissions&gt;   | 是   | 订阅的权限名列表,为空时表示订阅所有的权限状态变化。               |
460 461
| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo9)&gt; | 是 | 订阅指定tokenId与指定权限名状态变更事件的回调。|

C
chennian 已提交
462 463 464
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
465

C
chennian 已提交
466 467
| 错误码ID | 错误信息 |
| -------- | -------- |
Y
yu 已提交
468
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |
F
fanchenxuan 已提交
469 470 471 472
| 12100004 | The interface is called repeatedly with the same input. |
| 12100005 | The registration time has exceeded the limitation. |
| 12100007 | Service is abnormal. |
| 12100008 | Out of memory. |
C
chennian 已提交
473

474 475
**示例:**

Z
zhouyan 已提交
476 477
```ts
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
478
import bundleManager from '@ohos.bundle.bundleManager';
479

Z
zhouyan 已提交
480 481
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let appInfo: bundleManager.ApplicationInfo = bundleManager.getApplicationInfoSync('com.example.myapplication', 0, 100);
L
lsq 已提交
482
let tokenIDList: Array<number> = [appInfo.accessTokenId];
C
chennian 已提交
483
let permissionList: Array<Permissions> = ['ohos.permission.DISTRIBUTED_DATASYNC'];
C
chennian 已提交
484
try {
Z
zhouyan 已提交
485
    atManager.on('permissionStateChange', tokenIDList, permissionList, (data: abilityAccessCtrl.PermissionStateChangeInfo) => {
C
chennian 已提交
486
        console.debug('receive permission state change, data:' + JSON.stringify(data));
C
chennian 已提交
487 488 489
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
490 491 492 493 494
}
```

### off<sup>9+</sup>

L
lsq 已提交
495
off(type: 'permissionStateChange', tokenIDList: Array&lt;number&gt;, permissionList: Array&lt;Permissions&gt;, callback?: Callback&lt;PermissionStateChangeInfo&gt;): void;
496 497 498

取消订阅指定tokenId列表与权限列表的权限状态变更事件,使用callback回调异步返回结果。

W
wuliushuan 已提交
499 500
取消订阅不传callback时,批量删除tokenIDList和permissionList下面的所有callback。

C
chennian 已提交
501
**系统接口:** 此接口为系统接口。
502

C
chennian 已提交
503
**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS,仅系统应用可用。
504 505 506 507 508 509 510 511

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名             | 类型                   | 必填 | 说明                                                          |
| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
| type               | string                | 是   | 订阅事件类型,固定为'permissionStateChange',权限状态变更事件。  |
F
fanchenxuan 已提交
512
| tokenIDList        | Array&lt;number&gt;   | 是   | 订阅的tokenId列表,为空时表示订阅所有的应用的权限状态变化,必须与on的输入一致。 |
L
lsq 已提交
513
| permissionList | Array&lt;Permissions&gt;   | 是   | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,必须与on的输入一致。 |
514 515
| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo9)&gt; | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。|

C
chennian 已提交
516 517 518
**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
F
fanchenxuan 已提交
519

C
chennian 已提交
520 521
| 错误码ID | 错误信息 |
| -------- | -------- |
C
chennian 已提交
522
| 12100001 | The parameter is invalid. The tokenIDs or permissionNames in the list are all invalid. |
C
chennian 已提交
523
| 12100004 | The interface is not used together with 'on'. |
F
fanchenxuan 已提交
524 525
| 12100007 | Service is abnormal. |
| 12100008 | Out of memory. |
C
chennian 已提交
526

527 528
**示例:**

Z
zhouyan 已提交
529 530
```ts
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
531
import bundleManager from '@ohos.bundle.bundleManager';
532

Z
zhouyan 已提交
533 534
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let appInfo: bundleManager.ApplicationInfo = bundleManager.getApplicationInfoSync('com.example.myapplication', 0, 100);
L
lsq 已提交
535
let tokenIDList: Array<number> = [appInfo.accessTokenId];
C
chennian 已提交
536
let permissionList: Array<Permissions> = ['ohos.permission.DISTRIBUTED_DATASYNC'];
C
chennian 已提交
537
try {
L
lsq 已提交
538
    atManager.off('permissionStateChange', tokenIDList, permissionList);
C
chennian 已提交
539 540
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
541 542 543
}
```

L
lsq 已提交
544 545 546 547 548 549
### verifyAccessToken<sup>9+</sup>

verifyAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;

校验应用是否授予权限。使用Promise异步回调。

Z
zengyawen 已提交
550 551 552
> **说明:**
>
> 建议使用[checkAccessToken](#checkaccesstoken9)替代。
L
lsq 已提交
553 554 555 556 557 558 559

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名   | 类型                 | 必填 | 说明                                       |
| -------- | -------------------  | ---- | ------------------------------------------ |
F
fanchenxuan 已提交
560
| tokenID   |  number   | 是   | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。             |
L
lsq 已提交
561
| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
L
lsq 已提交
562 563 564 565 566 567 568 569 570

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
| Promise&lt;GrantStatus&gt; | Promise对象。返回授权状态结果。 |

**示例:**

Z
zhouyan 已提交
571 572 573
```ts
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
import { BusinessError } from '@ohos.base';
L
lsq 已提交
574

Z
zhouyan 已提交
575 576 577 578 579 580 581 582 583 584 585 586
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
try {
    atManager.verifyAccessToken(tokenID, permissionName).then((data: abilityAccessCtrl.GrantStatus) => {
        console.log(`promise: data->${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
        console.log(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
    });
}catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
L
lsq 已提交
587 588
```

589 590
### requestPermissionsFromUser<sup>9+</sup>

L
lsq 已提交
591
requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;, requestCallback: AsyncCallback&lt;PermissionRequestResult&gt;) : void;
592

L
lsq 已提交
593 594 595 596
用于UIAbility拉起弹框请求用户授权。使用callback异步回调。
> **说明:**
>
> 非UIAbility不支持调用本函数。
597 598 599 600 601 602 603 604 605

**模型约束**:此接口仅可在Stage模型下使用。

**系统能力**: SystemCapability.Security.AccessToken

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
L
lsq 已提交
606
| context | Context | 是 | 请求权限的UIAbility的UIAbilityContext。 |
L
lsq 已提交
607
| permissionList | Array&lt;Permissions&gt; | 是 | 权限名列表,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
608 609 610 611 612
| callback | AsyncCallback&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 是 | 回调函数,返回接口调用是否成功的结果。 |

**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
Y
yu 已提交
613

614 615
| 错误码ID | 错误信息 |
| -------- | -------- |
Z
zhouyan 已提交
616
| 12100001 | The parameter is invalid. The context is invalid when it does not belong to the application itself. |
617 618 619

**示例:**

Z
zhouyan 已提交
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
ArkTS语法不支持直接使用globalThis,需要通过一个单例的map来做中转。开发者需要:

   a. 在EntryAbility.ets中导入构建的单例对象GlobalThis。
      ```ts
       import { GlobalThis } from '../utils/globalThis'; // 需要根据globalThis.ets的路径自行适配
      ```
   b. 在onCreate中添加:
      ```ts
       GlobalThis.getInstance().setContext('context', this.context);
      ```

   > **说明:**
   >
   > 由于在ts中引入ets文件会有告警提示,需要将EntryAbility.ts的文件后缀修改为EntryAbility.ets,并在module.json5中同步修改。

**globalThis.ets示例代码如下:**
```ts
import common from '@ohos.app.ability.common';

// 构造单例对象
export class GlobalThis {
    private constructor() {}
    private static instance: GlobalThis;
    private _uiContexts = new Map<string, common.UIAbilityContext>();

    public static getInstance(): GlobalThis {
    if (!GlobalThis.instance) {
        GlobalThis.instance = new GlobalThis();
    }
    return GlobalThis.instance;
    }

    getContext(key: string): common.UIAbilityContext | undefined {
    return this._uiContexts.get(key);
    }

    setContext(key: string, value: common.UIAbilityContext): void {
    this._uiContexts.set(key, value);
    }

    // 其他需要传递的内容依此扩展
}
```

```ts
665
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
666 667 668 669 670
import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';
import { GlobalThis } from '../utils/globalThis';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
671
try {
Z
zhouyan 已提交
672 673 674 675 676
    let context: common.UIAbilityContext = GlobalThis.getInstance().getContext('context');
    atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'], (err: BusinessError, data)=>{
    console.info('data:' + JSON.stringify(data));
    console.info('data permissions:' + data.permissions);
    console.info('data authResults:' + data.authResults);
677 678 679 680
    });
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zhouyan 已提交
681
```
682 683 684

### requestPermissionsFromUser<sup>9+</sup>

L
lsq 已提交
685
requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;) : Promise&lt;PermissionRequestResult&gt;;
686

L
lsq 已提交
687 688 689 690 691
用于UIAbility拉起弹框请求用户授权。使用promise异步回调。

> **说明:**
>
> 非UIAbility不支持调用本函数。
692 693 694 695 696 697 698 699 700

**模型约束**:此接口仅可在Stage模型下使用。

**系统能力**: SystemCapability.Security.AccessToken

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
L
lsq 已提交
701
| context | Context | 是 | 请求权限的UIAbility的UIAbilityContext。 |
L
lsq 已提交
702
| permissionList | Array&lt;Permissions&gt; | 是 | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |
703 704 705 706 707 708 709 710 711 712

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 返回一个Promise,包含接口的结果。 |

**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)
Y
yu 已提交
713

714 715
| 错误码ID | 错误信息 |
| -------- | -------- |
Z
zhouyan 已提交
716
| 12100001 | The parameter is invalid. The context is invalid when it does not belong to the application itself. |
717 718 719

**示例:**

Z
zhouyan 已提交
720 721 722
修改EntryAbility.ets和导入GlobalThis等步骤同上,此处不再重复

```ts
723
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
724 725 726 727 728
import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';
import { GlobalThis } from '../utils/globalThis';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
729
try {
Z
zhouyan 已提交
730 731
    let context: common.UIAbilityContext = GlobalThis.getInstance().getContext('context');
    atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']).then((data) => {
C
chennian 已提交
732 733 734
        console.info('data:' + JSON.stringify(data));
        console.info('data permissions:' + data.permissions);
        console.info('data authResults:' + data.authResults);
Z
zhouyan 已提交
735
    }).catch((err: BusinessError) => {
C
chennian 已提交
736
        console.info('data:' + JSON.stringify(err));
737 738 739 740
    })
} catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
Z
zhouyan 已提交
741
```
742

C
chennian 已提交
743 744 745 746
### verifyAccessToken<sup>(deprecated)</sup>

verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;

C
chennian 已提交
747
校验应用是否授予权限。使用Promise异步回调。
C
chennian 已提交
748

Z
zengyawen 已提交
749 750 751
> **说明:**
>
> 从API version 9开始不再维护,建议使用[checkAccessToken](#checkaccesstoken9)替代。
C
chennian 已提交
752 753 754 755 756 757 758

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名   | 类型                 | 必填 | 说明                                       |
| -------- | -------------------  | ---- | ------------------------------------------ |
F
fanchenxuan 已提交
759
| tokenID   |  number   | 是   | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。             |
C
chennian 已提交
760 761 762 763 764 765 766 767 768 769
| permissionName | string | 是   | 需要校验的权限名称。 |

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
| Promise&lt;GrantStatus&gt; | Promise对象。返回授权状态结果。 |

**示例:**

Z
zhouyan 已提交
770
```ts
C
chennian 已提交
771
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
Z
zhouyan 已提交
772
import { BusinessError } from '@ohos.base';
C
chennian 已提交
773

Z
zhouyan 已提交
774 775 776 777 778 779 780 781 782 783 784
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
try {
    atManager.verifyAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
        console.log(`promise: data->${JSON.stringify(data)}`);
    }).catch((err: BusinessError) => {
        console.log(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
    });
}catch(err) {
    console.log(`catch err->${JSON.stringify(err)}`);
}
C
chennian 已提交
785 786
```

C
chennian 已提交
787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817
### checkAccessTokenSync<sup>10+</sup>

checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus;

校验应用是否被授予权限,同步返回结果。

**系统能力:** SystemCapability.Security.AccessToken

**参数:**

| 参数名   | 类型                 | 必填 | 说明                                       |
| -------- | -------------------  | ---- | ------------------------------------------ |
| tokenID   |  number   | 是   | 要校验应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)获得。              |
| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |

**返回值:**

| 类型          | 说明                                |
| :------------ | :---------------------------------- |
| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 |

**错误码:**

以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)

| 错误码ID | 错误信息 |
| -------- | -------- |
| 12100001 | The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256. |

**示例:**

Z
zhouyan 已提交
818 819 820 821 822 823 824
```ts
import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';

let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
let data: abilityAccessCtrl.GrantStatus = atManager.checkAccessTokenSync(tokenID, permissionName);
C
chennian 已提交
825 826 827
console.log(`data->${JSON.stringify(data)}`);
```

L
l00520400 已提交
828 829 830 831
### GrantStatus

表示授权状态的枚举。

832 833
**系统能力:** SystemCapability.Security.AccessToken

F
fanchenxuan 已提交
834
| 名称               |    值 | 说明        |
835 836 837 838 839 840
| ------------------ | ----- | ----------- |
| PERMISSION_DENIED  | -1    | 表示未授权。 |
| PERMISSION_GRANTED | 0     | 表示已授权。 |

### PermissionStateChangeType<sup>9+</sup>

L
lsq 已提交
841
表示权限授权状态变化操作类型的枚举。
842

F
fanchenxuan 已提交
843 844
**系统接口:** 此接口为系统接口。

845 846
**系统能力:** SystemCapability.Security.AccessToken

F
fanchenxuan 已提交
847
| 名称                     |    值 | 说明              |
848 849
| ----------------------- | ------ | ----------------- |
| PERMISSION_REVOKED_OPER | 0      | 表示权限取消操作。 |
Z
zhouyan 已提交
850
| PERMISSION_GRANTED_OPER | 1      | 表示权限授予操作。 |
851 852 853

### PermissionStateChangeInfo<sup>9+</sup>

L
lsq 已提交
854 855
表示某次权限授权状态变化的详情。

F
fanchenxuan 已提交
856 857
**系统接口:** 此接口为系统接口。

C
chennian 已提交
858
**系统能力:** SystemCapability.Security.AccessToken
859

860 861
| 名称           | 类型                       | 可读 | 可写 | 说明                |
| -------------- | ------------------------- | ---- | ---- | ------------------ |
862 863
| change         | [PermissionStateChangeType](#permissionstatechangetype9) | 是   | 否   | 权限授权状态变化类型。        |
| tokenID        | number                    | 是   | 否   | 被订阅的应用身份标识。 |
L
lsq 已提交
864
| permissionName | Permissions                    | 是   | 否   | 当前授权状态发生变化的权限名,合法的权限名取值可在[系统权限定义列表](../../security/permission-list.md)中查询。 |