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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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<Permissions>, callback: Callback<PermissionStateChangeInfo>): 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<Permissions> | 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<[PermissionStateChangeInfo](#permissionstatechangeinfo18)> | 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<Permissions>, callback?: Callback<PermissionStateChangeInfo>): 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<Permissions> | 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<[PermissionStateChangeInfo](#permissionstatechangeinfo18)> | 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<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>): 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<Permissions> | Yes| Permissions to request. For details about the permissions, see [Application Permissions](../../security/AccessToken/app-permissions.md).| 250| requestCallback | AsyncCallback<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 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<Permissions>): Promise<PermissionRequestResult> 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<Permissions> | 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<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 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<Permissions>): Promise<Array<GrantStatus>> 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<Permissions> | 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<Array<[GrantStatus](#grantstatus)>> | 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<boolean> 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<boolean> | 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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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