diff --git a/build-tools/test/figures/zh-ch_image_Add_Blur.png b/build-tools/test/figures/zh-ch_image_Add_Blur.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b0acfef7bffa4e6a8c9f9ab6a7dc9b809fa467 Binary files /dev/null and b/build-tools/test/figures/zh-ch_image_Add_Blur.png differ diff --git a/build-tools/test/figures/zh-ch_image_Add_Brightness.png b/build-tools/test/figures/zh-ch_image_Add_Brightness.png new file mode 100644 index 0000000000000000000000000000000000000000..997602e7d7c8ea440a4f344f6a480ea66022fabf Binary files /dev/null and b/build-tools/test/figures/zh-ch_image_Add_Brightness.png differ diff --git a/build-tools/test/figures/zh-ch_image_Add_Grayscale.png b/build-tools/test/figures/zh-ch_image_Add_Grayscale.png new file mode 100644 index 0000000000000000000000000000000000000000..69990adea571b907fabd854eb531528d7a60dc8f Binary files /dev/null and b/build-tools/test/figures/zh-ch_image_Add_Grayscale.png differ diff --git a/build-tools/test/figures/zh-ch_image_Main_Color.png b/build-tools/test/figures/zh-ch_image_Main_Color.png new file mode 100644 index 0000000000000000000000000000000000000000..25e130fcf37fc3654592f619c8a93b703a085e9a Binary files /dev/null and b/build-tools/test/figures/zh-ch_image_Main_Color.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001118642902.png b/build-tools/test/figures/zh-cn_image_0000001118642902.png new file mode 100644 index 0000000000000000000000000000000000000000..36eab44e87c075e01baa66bfc48a86ba703b7835 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001118642902.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001174104410.gif b/build-tools/test/figures/zh-cn_image_0000001174104410.gif new file mode 100644 index 0000000000000000000000000000000000000000..df8e47d8359338f9d0412cacfe12b847c28c2a84 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001174104410.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0000001174422898.png b/build-tools/test/figures/zh-cn_image_0000001174422898.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc7d8d7beda862221b05a9247723a3f74bf323d Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001174422898.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001200913929.png b/build-tools/test/figures/zh-cn_image_0000001200913929.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb89772d315b440636e8ceeda928e5db6b34e40 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001200913929.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001219662645.png b/build-tools/test/figures/zh-cn_image_0000001219662645.png new file mode 100644 index 0000000000000000000000000000000000000000..747b8f915f2d40803ce6a7937de1add5deb8e640 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001219662645.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001219744181.png b/build-tools/test/figures/zh-cn_image_0000001219744181.png new file mode 100644 index 0000000000000000000000000000000000000000..605c0a1ddc0e2bace2e4c9a23fc2391af9ebf5bf Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001219744181.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001219864131.png b/build-tools/test/figures/zh-cn_image_0000001219864131.png new file mode 100644 index 0000000000000000000000000000000000000000..5c0ada67867ec3765eeb53af5c62369762d0bac4 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001219864131.png differ diff --git a/build-tools/test/figures/zh-cn_image_0000001219864133.gif b/build-tools/test/figures/zh-cn_image_0000001219864133.gif new file mode 100644 index 0000000000000000000000000000000000000000..0befd736af77db15c203c4a5578929baf1d83e08 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0000001219864133.gif differ diff --git a/build-tools/test/figures/zh-cn_image_00007.gif b/build-tools/test/figures/zh-cn_image_00007.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c43bdf5b331963459154d4f0400fad7b17b34e8 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_00007.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0001.gif b/build-tools/test/figures/zh-cn_image_0001.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc737da287358cd81c65567e17da1bd4d701edff Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0001.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0002.gif b/build-tools/test/figures/zh-cn_image_0002.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e3ff82c3de3a8867949b0d65aa4ffe55360e7cb Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0002.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0004.gif b/build-tools/test/figures/zh-cn_image_0004.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b8462cf93c07e4b92c250bcb46409cc81e5129f Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0004.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0005.gif b/build-tools/test/figures/zh-cn_image_0005.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3616f948289aa9a358bcd716c9731c98d1458de Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0005.gif differ diff --git a/build-tools/test/figures/zh-cn_image_0006.gif b/build-tools/test/figures/zh-cn_image_0006.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a5fe369467d047364f518486d452ed2ac6aba96 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_0006.gif differ diff --git a/build-tools/test/figures/zh-cn_image_url.png b/build-tools/test/figures/zh-cn_image_url.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3175e145cfce399bef43bf5c7a2ac7feb0a576 Binary files /dev/null and b/build-tools/test/figures/zh-cn_image_url.png differ diff --git a/build-tools/test/figures/zh_cn_image_ExtensionContext_Example.png b/build-tools/test/figures/zh_cn_image_ExtensionContext_Example.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9b32c04d4667dc0aafab3123a0c77e3dd1da0e Binary files /dev/null and b/build-tools/test/figures/zh_cn_image_ExtensionContext_Example.png differ diff --git a/build-tools/test/js-apis-ability-context.md b/build-tools/test/js-apis-ability-context.md new file mode 100644 index 0000000000000000000000000000000000000000..e2917db1d06992c07874b1b1fde0047c781d77e7 --- /dev/null +++ b/build-tools/test/js-apis-ability-context.md @@ -0,0 +1,15 @@ +# AbilityContext + +AbilityContext是Ability的上下文环境,继承自Context。 + +AbilityContext模块提供允许访问特定Ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。 + +> **说明:** +> +> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> - 本模块接口仅可在Stage模型下使用。 + +## 使用说明 + +在使用AbilityContext的功能前,需要通过Ability子类实例获取。 + diff --git a/build-tools/test/js-apis-abilityAccessCtrl.md b/build-tools/test/js-apis-abilityAccessCtrl.md new file mode 100644 index 0000000000000000000000000000000000000000..3fac764ab3002b0efaec0594ee1df19221007205 --- /dev/null +++ b/build-tools/test/js-apis-abilityAccessCtrl.md @@ -0,0 +1,629 @@ +# @ohos.abilityAccessCtrl (程序访问控制管理) + +程序访问控制提供程序的权限管理能力,包括鉴权、授权和取消授权等。 + +> **说明:** +> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl' +``` + +## abilityAccessCtrl.createAtManager + +createAtManager(): AtManager + +访问控制管理:获取访问控制模块对象。 + +**系统能力:** SystemCapability.Security.AccessToken + + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| [AtManager](#atmanager) | 获取访问控制模块的实例。 | + +**示例:** + +```js +let atManager = abilityAccessCtrl.createAtManager(); +``` + +## AtManager + +管理访问控制模块的实例。 + +### checkAccessToken9+ + +checkAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus> + +校验应用是否授予权限。使用Promise异步回调。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------- | ---- | ------------------------------------------ | +| tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 需要校验的权限名称。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<GrantStatus> | Promise对象。返回授权状态结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +try { + atManager.checkAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => { + console.log(`checkAccessToken success, data->${JSON.stringify(data)}`); + }).catch((err) => { + console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`); + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### verifyAccessTokenSync9+ + +verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus + +校验应用是否被授予权限,同步返回结果。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------- | ---- | ------------------------------------------ | +| tokenID | number | 是 | 要校验应用的身份标识。 | +| permissionName | Permissions | 是 | 需要校验的权限名称。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | + +**示例:** + +```js +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; +let data = atManager.verifyAccessTokenSync(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"); +console.log(`data->${JSON.stringify(data)}`); +``` + +### grantUserGrantedPermission + +grantUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlag: number): Promise<void> + +授予应用user grant权限。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------- | ---- | ------------------------------------------------------------ | +| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 被授予的权限名称。 | +| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 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. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let permissionFlag = 1; +try { + atManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag).then(() => { + console.log('grantUserGrantedPermission success'); + }).catch((err) => { + console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`); + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### grantUserGrantedPermission + +grantUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlag: number, callback: AsyncCallback<void>): void + +授予应用user grant权限。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------- | ---- | ------------------------------------------------------------ | +| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。| +| permissionName | Permissions | 是 | 被授予的权限名称。 | +| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 | +| callback | AsyncCallback<void> | 是 | 授予应用user grant权限。当授予权限成功时,err为undefine;否则为错误对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 12100002 | TokenId does not exist. | +| 12100003 | Permission does not exist. | +| 12100006 | The specified application does not support the permissions granted or ungranted as specified. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let permissionFlag = 1; +try { + atManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (err, data) => { + if (err) { + console.log(`grantUserGrantedPermission fail, err->${JSON.stringify(err)}`); + } else { + console.log('grantUserGrantedPermission success'); + } + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### revokeUserGrantedPermission + +revokeUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlag: number): Promise<void> + +撤销应用user grant权限。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------- | ---- | ------------------------------------------------------------ | +| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 被撤销的权限名称。 | +| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 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. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let permissionFlag = 1; +try { + atManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag).then(() => { + console.log('revokeUserGrantedPermission success'); + }).catch((err) => { + console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`); + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### revokeUserGrantedPermission + +revokeUserGrantedPermission(tokenID: number, permissionName: Permissions, permissionFlag: number, callback: AsyncCallback<void>): void + +撤销应用user grant权限。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------- | ---- | ------------------------------------------------------------ | +| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 被撤销的权限名称。 | +| permissionFlag | number | 是 | 授权选项,1表示下次仍需弹窗,2表示允许、禁止后不再提醒,3表示系统授权不允许更改。 | +| callback | AsyncCallback<void> | 是 | 撤销应用user grant权限。当撤销权限成功时,err为undefine;否则为错误对象。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 12100002 | TokenId does not exist. | +| 12100003 | Permission does not exist. | +| 12100006 | The specified application does not support the permissions granted or ungranted as specified. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let permissionFlag = 1; +try { + atManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlag, (err, data) => { + if (err) { + console.log(`revokeUserGrantedPermission fail, err->${JSON.stringify(err)}`); + } else { + console.log('revokeUserGrantedPermission success'); + } + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### getPermissionFlags + +getPermissionFlags(tokenID: number, permissionName: Permissions): Promise<number> + +获取指定应用的指定权限的flag。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS or ohos.permission.GRANT_SENSITIVE_PERMISSIONS or ohos.permission.REVOKE_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------- | ---- | ------------------------------------------------------------ | +| tokenID | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 查询的权限名称。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<number> | Promise对象。返回查询结果。 | + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 12100002 | The specified tokenID does not exist. | +| 12100003 | The specified permission does not exist. | +| 12100006 | The operation is not allowed. Either the application is a sandbox or the tokenID is from a remote device. | +| 12100007 | Service is abnormal. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let permissionFlag = 1; +try { + atManager.getPermissionFlags(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => { + console.log(`getPermissionFlags success, data->${JSON.stringify(data)}`); + }).catch((err) => { + console.log(`getPermissionFlags fail, err->${JSON.stringify(err)}`); + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### getVersion9+ + +getVersion(): Promise<number> + +获取当前权限管理的数据版本。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Security.AccessToken + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<number> | Promise对象。返回查询到的版本号。 | + +**示例:** + +```js +let atManager = abilityAccessCtrl.createAtManager(); +let promise = atManager.getVersion(); +promise.then(data => { + console.log(`promise: data->${JSON.stringify(data)}`); +}); +``` + +### on9+ + +on(type: 'permissionStateChange', tokenIDList: Array<number>, permissionNameList: Array<Permissions>, callback: Callback<PermissionStateChangeInfo>): void; + +订阅指定tokenId列表与权限列表的权限状态变更事件。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------------------ | --------------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅事件类型,固定为'permissionStateChange',权限状态变更事件。 | +| tokenIDList | Array<number> | 是 | 订阅的tokenId列表,为空时表示订阅所有的应用的权限状态变化。 | +| permissionNameList | Array<Permissions> | 是 | 订阅的权限名列表,为空时表示订阅所有的权限状态变化。 | +| callback | Callback<[PermissionStateChangeInfo](#permissionstatechangeinfo9)> | 是 | 订阅指定tokenId与指定权限名状态变更事件的回调。| + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID is 0 | +| 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. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenIDList: Array = []; +let permissionNameList = []; +try { + atManager.on('permissionStateChange', tokenIDList, permissionNameList, (data) => { + console.debug("receive permission state change, data:" + JSON.stringify(data)); + }); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### off9+ + +off(type: 'permissionStateChange', tokenIDList: Array<number>, permissionNameList: Array<Permissions>, callback?: Callback<PermissionStateChangeInfo>): void; + +取消订阅指定tokenId列表与权限列表的权限状态变更事件,使用callback回调异步返回结果。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS,仅系统应用可用。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------------------ | --------------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 订阅事件类型,固定为'permissionStateChange',权限状态变更事件。 | +| tokenIDList | Array<number> | 是 | 订阅的tokenId列表,为空时表示订阅所有的应用的权限状态变化,必须与on的输入一致。 | +| permissionNameList | Array<Permissions> | 是 | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,必须与on的输入一致。 | +| callback | Callback<[PermissionStateChangeInfo](#permissionstatechangeinfo9)> | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。| + +**错误码:** + +以下错误码的详细介绍请参见[程序访问控制错误码](../errorcodes/errorcode-access-token.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 12100001 | The parameter is invalid. The tokenID in list is all invalid | +| 12100004 | The interface is not used with | +| 12100007 | Service is abnormal. | +| 12100008 | Out of memory. | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenIDList: Array = []; +let permissionNameList = []; +try { + atManager.off('permissionStateChange', tokenIDList, permissionNameList); +} catch(err) { + console.log(`catch err->${JSON.stringify(err)}`); +} +``` + +### verifyAccessToken9+ + +verifyAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus> + +校验应用是否授予权限。使用Promise异步回调。 + +> **说明:** 建议使用[checkAccessToken](#checkaccesstoken9)替代。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------- | ---- | ------------------------------------------ | +| tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | Permissions | 是 | 需要校验的权限名称。仅支持输入有效的权限名称。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<GrantStatus> | Promise对象。返回授权状态结果。 | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"); +promise.then(data => { + console.log(`promise: data->${JSON.stringify(data)}`); +}); +``` + +### verifyAccessToken(deprecated) + +verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus> + +校验应用是否授予权限。使用Promise异步回调。 + +> **说明:** 从API version 9开始不再维护,建议使用[checkAccessToken](#checkaccesstoken9)替代。 + +**系统能力:** SystemCapability.Security.AccessToken + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------- | ---- | ------------------------------------------ | +| tokenID | number | 是 | 要校验的目标应用的身份标识。可通过应用的[ApplicationInfo](js-apis-bundle-ApplicationInfo.md)获得。 | +| permissionName | string | 是 | 需要校验的权限名称。 | + +**返回值:** + +| 类型 | 说明 | +| :------------ | :---------------------------------- | +| Promise<GrantStatus> | Promise对象。返回授权状态结果。 | + +**示例:** + +```js +import abilityAccessCtrl from '@ohos.abilityAccessCtrl'; + +let atManager = abilityAccessCtrl.createAtManager(); +let tokenID = 0; // 可以通过getApplicationInfo获取accessTokenId +let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"); +promise.then(data => { + console.log(`promise: data->${JSON.stringify(data)}`); +}); +``` + +### GrantStatus + +表示授权状态的枚举。 + +**系统能力:** SystemCapability.Security.AccessToken + +| 名称 | 值 | 说明 | +| ------------------ | ----- | ----------- | +| PERMISSION_DENIED | -1 | 表示未授权。 | +| PERMISSION_GRANTED | 0 | 表示已授权。 | + +### PermissionStateChangeType9+ + +表示权限授权状态变化操作类型的枚举。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Security.AccessToken + +| 名称 | 值 | 说明 | +| ----------------------- | ------ | ----------------- | +| PERMISSION_REVOKED_OPER | 0 | 表示权限取消操作。 | +| PERMISSION_GRANTED_OPER | 1 | 表示权限授予操作。 | + +### PermissionStateChangeInfo9+ + +表示某次权限授权状态变化的详情。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Security.AccessToken + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------------- | ------------------------- | ---- | ---- | ------------------ | +| change | [PermissionStateChangeType](#permissionstatechangetype9) | 是 | 否 | 权限授权状态变化类型。 | +| tokenID | number | 是 | 否 | 被订阅的应用身份标识。 | +| permissionName | Permissions | 是 | 否 | 当前授权状态发生变化的权限名。 | diff --git a/build-tools/test/public_sys-resources/icon-caution.gif b/build-tools/test/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-caution.gif differ diff --git a/build-tools/test/public_sys-resources/icon-danger.gif b/build-tools/test/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-danger.gif differ diff --git a/build-tools/test/public_sys-resources/icon-note.gif b/build-tools/test/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-note.gif differ diff --git a/build-tools/test/public_sys-resources/icon-notice.gif b/build-tools/test/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-notice.gif differ diff --git a/build-tools/test/public_sys-resources/icon-tip.gif b/build-tools/test/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-tip.gif differ diff --git a/build-tools/test/public_sys-resources/icon-warning.gif b/build-tools/test/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/build-tools/test/public_sys-resources/icon-warning.gif differ