• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.abilityAccessCtrl (Application Access Control)
2
3The **abilityAccessCtrl** module provides APIs for application permission management, including authentication and authorization.
4
5> **NOTE**<br>
6> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version.
7
8## Modules to Import
9
10```ts
11import { abilityAccessCtrl } from '@kit.AbilityKit'
12```
13
14## abilityAccessCtrl.createAtManager
15
16createAtManager(): AtManager
17
18Creates an **AtManager** instance for application access control.
19
20**Atomic service API**: This API can be used in atomic services since API version 11.
21
22**System capability**: SystemCapability.Security.AccessToken
23
24
25**Return value**
26
27| Type| Description|
28| -------- | -------- |
29| [AtManager](#atmanager) | **AtManager** instance created.|
30
31**Example**
32
33```ts
34let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
35```
36
37## AtManager
38
39Provides APIs for application access control.
40
41### checkAccessToken<sup>9+</sup>
42
43checkAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;
44
45Checks whether a permission is granted to an application. This API uses a promise to return the result.
46
47**Atomic service API**: This API can be used in atomic services since API version 11.
48
49**System capability**: SystemCapability.Security.AccessToken
50
51**Parameters**
52
53| Name  | Type                | Mandatory| Description                                      |
54| -------- | -------------------  | ---- | ------------------------------------------ |
55| tokenID   |  number   | Yes  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
56| permissionName | Permissions | Yes  | Permission to check. For details about the permission, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
57
58**Return value**
59
60| Type         | Description                               |
61| :------------ | :---------------------------------- |
62| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise used to return the permission grant state.|
63
64**Error codes**
65
66For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
67
68| ID| Error Message|
69| -------- | -------- |
70| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
71| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
72
73**Example**
74
75```ts
76import { abilityAccessCtrl } from '@kit.AbilityKit';
77import { BusinessError } from '@kit.BasicServicesKit';
78
79let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
80let tokenID: number = 0; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a third-party application.
81atManager.checkAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
82  console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
83}).catch((err: BusinessError) => {
84  console.error(`checkAccessToken fail, err->${JSON.stringify(err)}`);
85});
86```
87
88### checkAccessTokenSync<sup>10+</sup>
89
90checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
91
92Checks whether a permission is granted to an application. This API returns the result synchronously.
93
94**Atomic service API**: This API can be used in atomic services since API version 11.
95
96**System capability**: SystemCapability.Security.AccessToken
97
98**Parameters**
99
100| Name  | Type                | Mandatory| Description                                      |
101| -------- | -------------------  | ---- | ------------------------------------------ |
102| tokenID   |  number   | Yes  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
103| permissionName | Permissions | Yes  | Permission to check. For details about the permission, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
104
105**Return value**
106
107| Type         | Description                               |
108| :------------ | :---------------------------------- |
109| [GrantStatus](#grantstatus) | Permission grant state.|
110
111**Error codes**
112
113For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
114
115| ID| Error Message|
116| -------- | -------- |
117| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
118| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
119
120**Example**
121
122```ts
123import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
124
125let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
126let tokenID: number = 0; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a third-party application.
127let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
128let data: abilityAccessCtrl.GrantStatus = atManager.checkAccessTokenSync(tokenID, permissionName);
129console.log(`data->${JSON.stringify(data)}`);
130```
131
132### on<sup>18+</sup>
133
134on(type: 'selfPermissionStateChange', permissionList: Array&lt;Permissions&gt;, callback: Callback&lt;PermissionStateChangeInfo&gt;): void
135
136Subscribes to changes in the state of the specified permissions for this application.
137
138Multiple callbacks can be registered for the same permission list.
139
140The same callback cannot be registered for overlapping permission lists.
141
142**Atomic service API**: This API can be used in atomic services since API version 18.
143
144**System capability**: SystemCapability.Security.AccessToken
145
146**Parameters**
147
148| Name            | Type                  | Mandatory| Description                                                         |
149| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
150| type               | string                | Yes  | Event type. The value is **'selfPermissionStateChange'**, which indicates the changes in the permission states specific to this application alone. |
151| permissionList | Array&lt;Permissions&gt;   | Yes  | List of target permissions. If this parameter is not specified, this API will subscribe to state changes of all permissions for this application. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
152| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo18)&gt; | Yes| Callback used to return the permission state change.|
153
154**Error codes**
155
156For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
157
158| ID| Error Message|
159| -------- | -------- |
160| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
161| 12100001 | Invalid parameter. The permissionName exceeds 256 characters. |
162| 12100004 | The API is used repeatedly with the same input. |
163| 12100005 | The registration time has exceeded the limitation. |
164| 12100007 | The service is abnormal. |
165
166**Example**
167
168```ts
169import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
170
171let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
172let permissionList: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION'];
173try {
174    atManager.on('selfPermissionStateChange', permissionList, (data: abilityAccessCtrl.PermissionStateChangeInfo) => {
175        console.log('receive permission state change, data:' + JSON.stringify(data));
176    });
177} catch(err) {
178    console.error(`catch err->${JSON.stringify(err)}`);
179}
180```
181### off<sup>18+</sup>
182
183off(type: 'selfPermissionStateChange', permissionList: Array&lt;Permissions&gt;, callback?: Callback&lt;PermissionStateChangeInfo&gt;): void
184
185Unsubscribes from changes in the state of the specified permissions for this application.
186
187If **callback** is not specified, this API will unregister all callbacks for **permissionList**.
188
189**Atomic service API**: This API can be used in atomic services since API version 18.
190
191**System capability**: SystemCapability.Security.AccessToken
192
193**Parameters**
194
195| Name            | Type                  | Mandatory| Description                                                         |
196| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
197| type               | string         | Yes  | Event type. The value is **'selfPermissionStateChange'**, which indicates the changes in the permission states specific to this application alone. |
198| permissionList | Array&lt;Permissions&gt;   | Yes  | List of target permissions. The value must be the same as that in **on()**. If this parameter is not specified, this API will unsubscribe from state changes for all permissions. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
199| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo18)&gt; | No| Callback to unregister.|
200
201**Error codes**
202
203For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
204
205| ID| Error Message|
206| -------- | -------- |
207| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
208| 12100001 | Invalid parameter. The permissionNames in the list are all invalid. |
209| 12100004 | The API is not used in pair with 'on'. |
210| 12100007 | The service is abnormal. |
211
212**Example**
213
214```ts
215import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
216
217let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
218let permissionList: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION'];
219try {
220    atManager.off('selfPermissionStateChange', permissionList);
221} catch(err) {
222    console.error(`catch err->${JSON.stringify(err)}`);
223}
224```
225
226### requestPermissionsFromUser<sup>9+</sup>
227
228requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;, requestCallback: AsyncCallback&lt;PermissionRequestResult&gt;): void
229
230Requests user authorization in a dialog box opened by a <!--RP1-->UIAbility<!--RP1End-->. This API uses an asynchronous callback to return the result.
231
232If the user rejects to grant the permission, the authorization dialog box cannot be displayed again. If required, the user can manually grant the permission on the **Settings** page. Alternatively, call [requestPermissionOnSetting](#requestpermissiononsetting12) to display the permission settings dialog box for the user to grant the permission.
233
234> **NOTE**
235>
236> Only <!--RP1-->UIAbility<!--RP1End--> is supported.
237
238**Atomic service API**: This API can be used in atomic services since API version 12.
239
240**Model restriction**: This API can be used only in the stage model.
241
242**System capability**: SystemCapability.Security.AccessToken
243
244**Parameters**
245
246| Name| Type| Mandatory| Description|
247| -------- | -------- | -------- | -------- |
248| context | [Context](js-apis-inner-application-context.md) | Yes| Context of the <!--RP1-->UIAbility<!--RP1End--> that requests the permission.|
249| permissionList | Array&lt;Permissions&gt; | Yes| Permissions to request. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
250| requestCallback | AsyncCallback&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | Yes| Callback used to return the result.|
251
252**Error codes**
253
254For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
255
256| ID| Error Message|
257| -------- | -------- |
258| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
259| 12100001 | Invalid parameter. The context is invalid when it does not belong to the application itself. |
260
261**Example**
262
263For details about how to obtain the context in the example, see [Obtaining the Context of UIAbility](../../application-models/uiability-usage.md#obtaining-the-context-of-uiability).
264For details about the process and example of applying for user authorization, see [Requesting User Authorization](../../security/AccessToken/request-user-authorization.md).
265
266```ts
267import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
268import { BusinessError } from '@kit.BasicServicesKit';
269
270let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
271let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
272atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'], (err: BusinessError, data: PermissionRequestResult) => {
273  if (err) {
274    console.error(`requestPermissionsFromUser fail, err->${JSON.stringify(err)}`);
275  } else {
276    console.info('data:' + JSON.stringify(data));
277    console.info('data permissions:' + data.permissions);
278    console.info('data authResults:' + data.authResults);
279    console.info('data dialogShownResults:' + data.dialogShownResults);
280  }
281});
282```
283
284### requestPermissionsFromUser<sup>9+</sup>
285
286requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;): Promise&lt;PermissionRequestResult&gt;
287
288Requests user authorization in a dialog box opened by a <!--RP1-->UIAbility<!--RP1End-->. This API uses a promise to return the result.
289
290If the user rejects to grant the permission, the authorization dialog box cannot be displayed again. If required, the user can manually grant the permission on the **Settings** page. Alternatively, call [requestPermissionOnSetting](#requestpermissiononsetting12) to display the permission settings dialog box for the user to grant the permission.
291
292> **NOTE**
293>
294> Only <!--RP1-->UIAbility<!--RP1End--> is supported.
295
296**Atomic service API**: This API can be used in atomic services since API version 11.
297
298**Model restriction**: This API can be used only in the stage model.
299
300**System capability**: SystemCapability.Security.AccessToken
301
302**Parameters**
303
304| Name| Type| Mandatory| Description|
305| -------- | -------- | -------- | -------- |
306| context | [Context](js-apis-inner-application-context.md) | Yes| Context of the <!--RP1-->UIAbility<!--RP1End--> that requests the permission.|
307| permissionList | Array&lt;Permissions&gt; | Yes| Permissions to request. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
308
309**Return value**
310
311| Type| Description|
312| -------- | -------- |
313| Promise&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | Promise used to return the result.|
314
315**Error codes**
316
317For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
318
319| ID| Error Message|
320| -------- | -------- |
321| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
322| 12100001 | Invalid parameter. The context is invalid when it does not belong to the application itself. |
323
324**Example**
325
326For details about how to obtain the context in the example, see [Obtaining the Context of UIAbility](../../application-models/uiability-usage.md#obtaining-the-context-of-uiability).
327For details about the process and example of applying for user authorization, see [Requesting User Authorization](../../security/AccessToken/request-user-authorization.md).
328
329```ts
330import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
331import { BusinessError } from '@kit.BasicServicesKit';
332
333let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
334let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
335atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']).then((data: PermissionRequestResult) => {
336  console.info('data:' + JSON.stringify(data));
337  console.info('data permissions:' + data.permissions);
338  console.info('data authResults:' + data.authResults);
339  console.info('data dialogShownResults:' + data.dialogShownResults);
340}).catch((err: BusinessError) => {
341  console.error('data:' + JSON.stringify(err));
342});
343```
344
345### requestPermissionOnSetting<sup>12+</sup>
346
347requestPermissionOnSetting(context: Context, permissionList: Array&lt;Permissions&gt;): Promise&lt;Array&lt;GrantStatus&gt;&gt;
348
349Requests permissions in a **Settings** dialog box. This API displays a permission settings dialog box for a UIAbility/UIExtensionAbility to grant permissions the second time.
350
351Before calling this API, the application must have called [requestPermissionsFromUser](#requestpermissionsfromuser9). If the user grants the permissions required when the authorization dialog box is displayed the first time, calling this API will not display the permission settings dialog box.
352
353> **NOTE**
354>
355> This API supports only UIAbilities/UIExtensionAbilities.
356
357**Atomic service API**: This API can be used in atomic services since API version 12.
358
359**Model restriction**: This API can be used only in the stage model.
360
361**System capability**: SystemCapability.Security.AccessToken
362
363**Parameters**
364
365| Name| Type| Mandatory| Description|
366| -------- | -------- | -------- | -------- |
367| context | [Context](js-apis-inner-application-context.md) | Yes| Context of the UIAbility/UIExtensionAbility that requests the permissions.|
368| permissionList | Array&lt;Permissions&gt; | Yes| Permissions to request. For details about the permissions, see [Application Permission Groups](../../security/AccessToken/app-permission-group-list.md).|
369
370**Return value**
371
372| Type         | Description                               |
373| :------------ | :---------------------------------- |
374| Promise&lt;Array&lt;[GrantStatus](#grantstatus)&gt;&gt; | Promise used to return the authorization result.|
375
376**Error codes**
377
378For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
379
380| ID| Error Message|
381| -------- | -------- |
382| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
383| 12100001 | Invalid parameter. Possible causes: 1. The context is invalid because it does not belong to the application itself; 2. The permission list contains the permission that is not declared in the module.json file; 3. The permission list is invalid because the permissions in it do not belong to the same permission group. |
384| 12100010 | The request already exists. |
385| 12100011 | All permissions in the permission list have been granted. |
386| 12100012 | The permission list contains the permission that has not been revoked by the user. |
387
388**Example**
389For details about how to obtain the context in the example, see [Obtaining the Context of UIAbility](../../application-models/uiability-usage.md#obtaining-the-context-of-uiability).
390
391```ts
392import { abilityAccessCtrl, Context, common } from '@kit.AbilityKit';
393import { BusinessError } from '@kit.BasicServicesKit';
394
395let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
396let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
397atManager.requestPermissionOnSetting(context, ['ohos.permission.CAMERA']).then((data: Array<abilityAccessCtrl.GrantStatus>) => {
398  console.info('data:' + JSON.stringify(data));
399}).catch((err: BusinessError) => {
400  console.error('data:' + JSON.stringify(err));
401});
402```
403
404### requestGlobalSwitch<sup>12+</sup>
405
406requestGlobalSwitch(context: Context, type: SwitchType): Promise&lt;boolean&gt;
407
408Displays a dialog box for setting a global switch.
409
410When the features such as recording and photographing are disabled, the application can call this API to open the dialog box, asking the user to enable the related features. If the global switch is turned on, no dialog box will be displayed.
411
412> **NOTE**
413>
414> This API supports only UIAbilities/UIExtensionAbilities.
415
416**Atomic service API**: This API can be used in atomic services since API version 12.
417
418**Model restriction**: This API can be used only in the stage model.
419
420**System capability**: SystemCapability.Security.AccessToken
421
422**Parameters**
423
424| Name| Type| Mandatory| Description|
425| -------- | -------- | -------- | -------- |
426| context | [Context](js-apis-inner-application-context.md) | Yes| Context of the UIAbility/UIExtensionAbility.|
427| type | [SwitchType](#switchtype12) | Yes| Type of the global switch.|
428
429**Return value**
430
431| Type         | Description                               |
432| :------------ | :---------------------------------- |
433| Promise&lt;boolean&gt; | Promise used to return the global switch status.|
434
435**Error codes**
436
437For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
438
439| ID| Error Message|
440| -------- | -------- |
441| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
442| 12100001 | Invalid parameter. Possible causes: 1. The context is invalid because it does not belong to the application itself; 2. The type of global switch is not support. |
443| 12100010 | The request already exists. |
444| 12100013 | The specific global switch is already open. |
445
446**Example**
447For details about how to obtain the context in the example, see [Obtaining the Context of UIAbility](../../application-models/uiability-usage.md#obtaining-the-context-of-uiability).
448
449```ts
450import { abilityAccessCtrl, Context, common } from '@kit.AbilityKit';
451import { BusinessError } from '@kit.BasicServicesKit';
452
453let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
454let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
455atManager.requestGlobalSwitch(context, abilityAccessCtrl.SwitchType.CAMERA).then((data: Boolean) => {
456  console.info('data:' + JSON.stringify(data));
457}).catch((err: BusinessError) => {
458  console.error('data:' + JSON.stringify(err));
459});
460```
461
462### verifyAccessTokenSync<sup>9+</sup>
463
464verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
465
466Verifies whether a permission is granted to an application. This API returns the result synchronously.
467
468**System capability**: SystemCapability.Security.AccessToken
469
470**Parameters**
471
472| Name  | Type                | Mandatory| Description                                      |
473| -------- | -------------------  | ---- | ------------------------------------------ |
474| tokenID   |  number   | Yes  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
475| permissionName | Permissions | Yes  | Permission to verify. For details about the permission, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
476
477**Return value**
478
479| Type         | Description                               |
480| :------------ | :---------------------------------- |
481| [GrantStatus](#grantstatus) | Permission grant state.|
482
483**Error codes**
484
485For details about the error codes, see [Access Control Error Codes](errorcode-access-token.md).
486
487| ID| Error Message|
488| -------- | -------- |
489| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
490| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
491
492**Example**
493
494```ts
495import { abilityAccessCtrl } from '@kit.AbilityKit';
496
497let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
498let tokenID: number = 0; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a third-party application.
499try {
500  let data: abilityAccessCtrl.GrantStatus = atManager.verifyAccessTokenSync(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS');
501  console.log(`data->${JSON.stringify(data)}`);
502} catch(err) {
503  console.error(`catch err->${JSON.stringify(err)}`);
504}
505```
506
507### verifyAccessToken<sup>9+</sup>
508
509verifyAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;
510
511Verifies whether a permission is granted to an application. This API uses a promise to return the result.
512
513> **NOTE**
514>
515> You are advised to use [checkAccessToken](#checkaccesstoken9).
516
517**System capability**: SystemCapability.Security.AccessToken
518
519**Parameters**
520
521| Name  | Type                | Mandatory| Description                                      |
522| -------- | -------------------  | ---- | ------------------------------------------ |
523| tokenID   |  number   | Yes  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
524| permissionName | Permissions | Yes  | Permission to verify. For details about the permission, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
525
526**Return value**
527
528| Type         | Description                               |
529| :------------ | :---------------------------------- |
530| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise used to return the authorization result.|
531
532**Example**
533
534```ts
535import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
536import { BusinessError } from '@kit.BasicServicesKit';
537
538let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
539let tokenID: number = 0; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a third-party application.
540let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
541atManager.verifyAccessToken(tokenID, permissionName).then((data: abilityAccessCtrl.GrantStatus) => {
542  console.log(`promise: data->${JSON.stringify(data)}`);
543}).catch((err: BusinessError) => {
544  console.error(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
545});
546```
547
548### verifyAccessToken<sup>(deprecated)</sup>
549
550verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;
551
552Verifies whether a permission is granted to an application. This API uses a promise to return the result.
553
554> **NOTE**
555>
556> This API is no longer maintained since API version 9. Use [checkAccessToken](#checkaccesstoken9) instead.
557
558**System capability**: SystemCapability.Security.AccessToken
559
560**Parameters**
561
562| Name  | Type                | Mandatory| Description                                      |
563| -------- | -------------------  | ---- | ------------------------------------------ |
564| tokenID   |  number   | Yes  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
565| permissionName | string | Yes  | Permission to verify. For details about the permission, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
566
567**Return value**
568
569| Type         | Description                               |
570| :------------ | :---------------------------------- |
571| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise used to return the authorization result.|
572
573**Example**
574
575```ts
576import { abilityAccessCtrl } from '@kit.AbilityKit';
577import { BusinessError } from '@kit.BasicServicesKit';
578
579let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
580let tokenID: number = 0; // Use bundleManager.getApplicationInfo() to obtain the token ID for a system application, and use bundleManager.getBundleInfoForSelf() to obtain the token ID for a third-party application.
581atManager.verifyAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
582  console.log(`promise: data->${JSON.stringify(data)}`);
583}).catch((err: BusinessError) => {
584  console.error(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
585});
586```
587
588## GrantStatus
589
590Enumerates the permission grant states.
591
592**Atomic service API**: This API can be used in atomic services since API version 11.
593
594**System capability**: SystemCapability.Security.AccessToken
595
596| Name              |    Value| Description       |
597| ------------------ | ----- | ----------- |
598| PERMISSION_DENIED  | -1    | The permission is not granted.|
599| PERMISSION_GRANTED | 0     | The permission is granted.|
600
601## SwitchType<sup>12+</sup>
602
603Enumerates the global switch types.
604
605**Atomic service API**: This API can be used in atomic services since API version 12.
606
607**System capability**: SystemCapability.Security.AccessToken
608
609| Name              |    Value| Description       |
610| ------------------ | ----- | ----------- |
611| CAMERA  | 0    | Global switch of the camera.|
612| MICROPHONE | 1     | Global switch of the microphone.|
613| LOCATION | 2     | Global switch of the location service.|
614
615## PermissionStateChangeType<sup>18+</sup>
616
617Enumerates the operations that trigger permission state changes.
618
619**Atomic service API**: This API can be used in atomic services since API version 18.
620
621**System capability**: SystemCapability.Security.AccessToken
622
623| Name                    |    Value| Description             |
624| ----------------------- | ------ | ----------------- |
625| PERMISSION_REVOKED_OPER | 0      | Operation to revoke a permission.|
626| PERMISSION_GRANTED_OPER | 1      | Operation to grant a permission.|
627
628## PermissionStateChangeInfo<sup>18+</sup>
629
630Represents the permission state change details.
631
632**Atomic service API**: This API can be used in atomic services since API version 18.
633
634**System capability**: SystemCapability.Security.AccessToken
635
636| Name          | Type                      | Read Only| Optional| Description               |
637| -------------- | ------------------------- | ---- | ---- | ------------------ |
638| change         | [PermissionStateChangeType](#permissionstatechangetype18) | Yes  | No  | Operation that triggers the permission state change.       |
639| tokenID        | number                    | Yes  | No  | Identifier of the target application, which is the value of **accessTokenId** contained in [ApplicationInfo](js-apis-bundleManager-applicationInfo.md).|
640| permissionName | Permissions                    | Yes  | No  | Permissions whose authorization state changes. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).|
641
642## PermissionRequestResult<sup>10+</sup>
643
644type PermissionRequestResult = _PermissionRequestResult
645
646Represents the permission request result.
647
648**Atomic service API**: This API can be used in atomic services since API version 11.
649
650**Model restriction**: This API can be used only in the stage model.
651
652**System capability**: SystemCapability.Security.AccessToken
653
654| Type| Description|
655| -------- | -------- |
656| [_PermissionRequestResult](js-apis-permissionrequestresult.md) | Permission request result object.|
657
658## Context<sup>10+</sup>
659
660type Context = _Context
661
662Represents the context for the ability or application. It allows access to application-specific resources.
663
664**Atomic service API**: This API can be used in atomic services since API version 11.
665
666**Model restriction**: This API can be used only in the stage model.
667
668**System capability**: SystemCapability.Security.AccessToken
669
670| Type| Description|
671| -------- | -------- |
672| [_Context](js-apis-inner-application-context.md) | Context for an ability or application to access to application-specific resources.|
673