diff --git a/CODEOWNERS b/CODEOWNERS index 1e6d1e90ebe18fdf635aea24811acebd8a473d78..02ff9150c412e86055638ca4cbf6f730f6a54fe2 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -180,6 +180,7 @@ zh-cn/application-dev/reference/js-service-widget-ui/ @HelloCrease zh-cn/application-dev/website.md @zengyawen zh-cn/application-dev/faqs/ @zengyawen zh-cn/application-dev/file-management/ @qinxiaowang +zh-cn/application-dev/application-test/ @HelloCrease zh-cn/application-dev/reference/apis/js-apis-DataUriUtils.md @RayShih zh-cn/application-dev/reference/apis/js-apis-ability-errorCode.md @RayShih @@ -225,7 +226,7 @@ zh-cn/application-dev/reference/apis/js-apis-application-shellCmdResult.md @RayS zh-cn/application-dev/reference/apis/js-apis-commonEvent.md @RayShih zh-cn/application-dev/reference/apis/js-apis-emitter.md @RayShih zh-cn/application-dev/reference/apis/js-apis-notification.md @RayShih -zh-cn/application-dev/reference/apis/js-apis-reminderAgent.md @RayShih +zh-cn/application-dev/reference/apis/js-apis-reminderAgent.md @HelloCrease zh-cn/application-dev/reference/apis/js-apis-eventhub.md @RayShih zh-cn/application-dev/reference/apis/js-apis-Bundle.md @RayShih zh-cn/application-dev/reference/apis/js-apis-deviceUsageStatistics.md @RayShih @@ -445,3 +446,5 @@ zh-cn/application-dev/reference/apis/js-apis-net-policy.md @zengyawen zh-cn/application-dev/reference/apis/js-apis-net-sharing.md @zengyawen zh-cn/application-dev/reference/apis/js-apis-net-statistics.md @zengyawen zh-cn/application-dev/reference/apis/js-apis-tlsSocket.md @zengyawen +zh-cn/application-dev/reference/apis/js-apis-reminderAgentManager.md @HelloCrease +zh-cn/application-dev/reference/apis/js-apis-hiviewdfx-hiappevent.md @zengyawen diff --git a/en/application-dev/ability/context-userguide.md b/en/application-dev/ability/context-userguide.md index 4abf217eee28052d3163d32aa0bce18893e1df08..d5cd52e64ed5064ded90efea7d60898e1c2ee96c 100644 --- a/en/application-dev/ability/context-userguide.md +++ b/en/application-dev/ability/context-userguide.md @@ -235,13 +235,13 @@ export default class MainAbility extends Ability { For details, see [FormExtensionContext](../reference/apis/js-apis-formextensioncontext.md). -### Obtaining the Context on an eTS Page +### Obtaining the Context on an ArkTS Page -In the stage model, in the `onWindowStageCreate` lifecycle of an ability, you can call `SetUIContent` of `WindowStage` to load an eTS page. In some scenarios, you need to obtain the context on the page to call related APIs. +In the stage model, in the `onWindowStageCreate` lifecycle of an ability, you can call `SetUIContent` of `WindowStage` to load an ArkTS page. In some scenarios, you need to obtain the context on the page to call related APIs. **How to Obtain** -Use the API described in the table below to obtain the context associated with an eTS page. +Use the API described in the table below to obtain the context associated with an ArkTS page. | API | Description | | :------------------------------------ | :--------------------------- | diff --git a/en/application-dev/napi/napi-guidelines.md b/en/application-dev/napi/napi-guidelines.md index f471f4a6eed7d3eb2c96dab8cae4cb7480a13616..188b4f1336e2c56562f594e42dc26cabf8a8fc55 100644 --- a/en/application-dev/napi/napi-guidelines.md +++ b/en/application-dev/napi/napi-guidelines.md @@ -17,11 +17,11 @@ You can `import` the native .so that contains the JS processing logic. For examp ### .so Naming Rules -Each module has a .so file. For example, if the module name is `hello`, name the .so file **libhello.so**. The `nm_modname` field in `napi_module` must be `hello`, which is the same as the module name. The sample code for importing the .so file is `import hello from 'libhello.so'`. +Each module has a .so file. For example, if the module name is `hello`, name the .so file `libhello.so`. The `nm_modname` field in `napi_module` must be `hello`, which is the same as the module name. The sample code for importing the .so file is `import hello from 'libhello.so'`. ### JS Objects and Threads -The Ark engine prevents NAPIs from being called to operate JS objects in non-JS threads. Otherwise, the application will crash. +The Ark engine prevents NAPIs from being called to operate JS objects in non-JS threads. Otherwise, the application will crash. Observe the following rules: * The NAPIs can be used only in JS threads. * **env** is bound to a thread and cannot be used across threads. The JS object created by a NAPI can be used only in the thread, in which the object is created, that is, the JS object is bound to the **env** of the thread. @@ -640,8 +640,3 @@ export default { } } ``` -## Samples -The following samples are provided for native API development: -- [`NativeAPI`: NativeAPI (eTS) (API8)](https://gitee.com/openharmony/app_samples/tree/master/Native/NativeAPI) -- [First Native C++ Application (eTS) (API9)](https://gitee.com/openharmony/codelabs/tree/master/NativeAPI/NativeTemplateDemo) -- [Native Component (eTS) (API9) ](https://gitee.com/openharmony/codelabs/tree/master/NativeAPI/XComponent) diff --git a/zh-cn/application-dev/ability/ability-brief.md b/zh-cn/application-dev/ability/ability-brief.md index e0642d3ae2f251eb04d476aea34cc01dc96aa322..149bd6429f51455539145b3e1fef2e59b38e8882 100644 --- a/zh-cn/application-dev/ability/ability-brief.md +++ b/zh-cn/application-dev/ability/ability-brief.md @@ -32,4 +32,4 @@ Stage模型的设计,主要是为了开发者更加方便地开发出分布式 ## 相关实例 针对Ability开发,有以下相关实例可供参考: -- [Page内和Page间导航跳转(eTS)(API8)](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility) \ No newline at end of file +- [Page内和Page间导航跳转(ArkTS)(API8)](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility) \ No newline at end of file diff --git a/zh-cn/application-dev/ability/context-userguide.md b/zh-cn/application-dev/ability/context-userguide.md index 5db42e2462f957d5ae454dae2890e1d5d980dc65..5873e4a27f5fb5f60aeebc0cf55337263cfc0cec 100644 --- a/zh-cn/application-dev/ability/context-userguide.md +++ b/zh-cn/application-dev/ability/context-userguide.md @@ -235,13 +235,13 @@ export default class MainAbility extends Ability { ​ [FormExtensionContext](../reference/apis/js-apis-formextensioncontext.md) -### 在eTS页面中访问Context +### 在ArkTS页面中访问Context -Stage模型下,在Ability的`onWindowStageCreate`生命周期中,可以通过WindowStage的`SetUIContent`方法加载一个eTS页面。在一些场景中,需要在页面内获取Context调用相关API。 +Stage模型下,在Ability的`onWindowStageCreate`生命周期中,可以通过WindowStage的`SetUIContent`方法加载一个ArkTS页面。在一些场景中,需要在页面内获取Context调用相关API。 **获取方法** -在eTS页面中通过以下全局方法获取当前页面关联的Context。 +在ArkTS页面中通过以下全局方法获取当前页面关联的Context。 | 接口名 | 描述 | | :------------------------------------ | :--------------------------- | diff --git a/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md b/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md index e13a7049bcad16fbdfb9cf3ac0a66cf84814c60d..62fc83581a5869f2281914958d41cc164ef3f003 100644 --- a/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md +++ b/zh-cn/application-dev/device-usage-statistics/device-usage-statistics-dev-guide.md @@ -5,6 +5,8 @@ 设备使用信息统计,包括app usage/notification usage/system usage等使用统计。例如应用使用信息统计,用于保存和查询应用使用详情(app usage)、事件日志数据(event log)、应用分组(bundle group)情况。 部件缓存的应用记录(使用历史统计和使用事件记录)会在事件上报后30分钟内刷新到数据库持久化保存。 +根据设备的使用信息统计接口,开发者可以开发出健康管理类应用来实现个人设备健康使用功能,并向用户展示其个人设备的使用记录。 + ## 接口说明 注册相关接口包导入: ```js @@ -56,7 +58,6 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.queryBundleActiveStates(0, 20000000000000).then(res => { console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.'); for (let i = 0; i < res.length; i++) { @@ -66,19 +67,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.queryBundleActiveStates(0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryBundleActiveStates callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryBundleActiveStates callback success.'); - for (let i = 0; i < res.length; i++) { - console.log('BUNDLE_ACTIVE queryBundleActiveStates callback number : ' + (i + 1)); - console.log('BUNDLE_ACTIVE queryBundleActiveStates callback result ' + JSON.stringify(res[i])); - } - } - }); ``` 3. 通过指定起始和结束时间查询应用使用时长统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -86,7 +74,6 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.queryBundleStateInfos(0, 20000000000000).then(res => { console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.'); let i = 1; @@ -98,21 +85,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.queryBundleStateInfos(0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryBundleStateInfos callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryBundleStateInfos callback success.'); - let i = 1; - for(let key in res){ - console.log('BUNDLE_ACTIVE queryBundleStateInfos callback number : ' + i); - console.log('BUNDLE_ACTIVE queryBundleStateInfos callback result ' + JSON.stringify(res[key])); - i++; - } - } - }); ``` 4. 通过指定起始和结束时间查询当前应用的事件集合,config.json中不需要配置权限。 @@ -120,7 +92,6 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.queryCurrentBundleActiveStates(0, 20000000000000).then(res => { console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise success.'); for (let i = 0; i < res.length; i++) { @@ -130,19 +101,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.queryCurrentBundleActiveStates(0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback success.'); - for (let i = 0; i < res.length; i++) { - console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback number : ' + (i + 1)); - console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback result ' + JSON.stringify(res[i])); - } - } - }); ``` 5. 通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -150,7 +108,6 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.queryBundleStateInfoByInterval(0, 0, 20000000000000).then(res => { console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise success.'); for (let i = 0; i < res.length; i++) { @@ -161,18 +118,6 @@ import stats from '@ohos.bundleState'; console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise failed, because: ' + err.code); }); - // 异步方法callback方式 - stats.queryBundleStateInfoByInterval(0, 0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback success.'); - for (let i = 0; i < res.length; i++) { - console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback number : ' + (i + 1)); - console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback result ' + JSON.stringify(res[i])); - } - } - }); ``` 6. 查询(无参)当前调用者应用的使用优先级群组,config.json中不需要配置权限。 @@ -180,43 +125,24 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // promise方式 stats.queryAppUsagePriorityGroup().then(res => { console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res)); }).catch(err => { console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code); }); - - // callback方式 - stats.queryAppUsagePriorityGroup((err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback failed. because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback succeeded. result: ' + JSON.stringify(res)); - } - }); ``` -7. 判断指定Bundle Name的应用当前是否是空闲状态,config.json中不需要配置权限,三方应用只能查询自身的空闲状态。 +7. 判断指定Bundle Name的应用当前是否是空闲状态,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO,三方应用只能查询自身的空闲状态。 ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.isIdleState("com.ohos.camera").then(res => { console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res)); }).catch(err => { console.log('BUNDLE_ACTIVE isIdleState promise failed, because: ' + err.code); }); - // 异步方法callback方式 - stats.isIdleState("com.ohos.camera", (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE isIdleState callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE isIdleState callback succeeded, result: ' + JSON.stringify(res)); - } - }); ``` 8. 查询FA使用记录。返回数量最大不超过maxNum设置的值,若不传入maxNum参数,则默认maxNum为1000。config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -245,32 +171,6 @@ import stats from '@ohos.bundleState'; }).catch( err=> { console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.getRecentlyUsedModules(1000, (err, res) => { - if(err) { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback succeeded.'); - for (let i = 0; i < res.length; i++) { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback number : ' + (i + 1)); - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback result ' + JSON.stringify(res[i])); - } - } - }); - - // 无maNum参数异步方法callback方式 - stats.getRecentlyUsedModules((err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback succeeded.'); - for (let i = 0; i < res.length; i++) { - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback number : ' + (i + 1)); - console.log('BUNDLE_ACTIVE getRecentlyUsedModules callback result ' + JSON.stringify(res[i])); - } - } - }); ``` 9. 通过指定起始和结束时间查询所有应用的通知次数,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -278,23 +178,12 @@ import stats from '@ohos.bundleState'; ```js import stats from '@ohos.bundleState' - // 异步方法promise方式 stats.queryAppNotificationNumber(0, 20000000000000).then(res => { console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise success.'); console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise result ' + JSON.stringify(res)); }).catch(err => { console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.queryAppNotificationNumber(0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryAppNotificationNumber callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryAppNotificationNumber callback success.'); - console.log('BUNDLE_ACTIVE queryAppNotificationNumber callback result ' + JSON.stringify(res)); - } - }); ``` 10. 通过指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -309,16 +198,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise failed, because: ' + err.code); }); - - // 异步方法callback方式 - stats.queryBundleActiveEventStates(0, 20000000000000, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryBundleActiveEventStates callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryBundleActiveEventStates callback success.'); - console.log('BUNDLE_ACTIVE queryBundleActiveEventStates callback result ' + JSON.stringify(res)); - } - }); ``` 11. 查询(无参)当前调用者应用的使用优先级群组,config.json中不需要配置权限。查询(有参)指定应用的使用优先级群组,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。 @@ -333,14 +212,6 @@ import stats from '@ohos.bundleState'; console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code); }); - // 无bundleName异步方法callback方式 - stats.queryAppUsagePriorityGroup((err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback failed. because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback succeeded. result: ' + JSON.stringify(res)); - } - }); let bundleName = "com.ohos.camera"; // 有bundleName异步promise方式 stats.queryAppUsagePriorityGroup(bundleName).then(res => { @@ -348,15 +219,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE QueryPackageGroup promise failed. because: ' + err.code); }); - - // 有bundleName异步方法callback方式 - stats.queryAppUsagePriorityGroup(bundleName, (err, res) => { - if (err) { - console.log('BUNDLE_ACTIVE QueryPackageGroup callback failed. because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE QueryPackageGroup callback succeeded. result: ' + JSON.stringify(res)); - } - }); ``` 11. 给应用名是bundleName的应用分组设置成newGroup,返回设置结果是否成功 @@ -364,20 +226,11 @@ import stats from '@ohos.bundleState'; ```javascript import stats from '@ohos.bundleState' - // 异步方法promise stats.setBundleGroup(this.bundleName, this.newGroup).then(() => { console.log('BUNDLE_ACTIVE SetBundleGroup promise succeeded.'); }).catch( err => { console.log('BUNDLE_ACTIVE SetBundleGroup promise failed. because: ' + err.code); }); - // 异步方法callback - stats.setBundleGroup(this.bundleName, this.newGroup, (err) => { - if (err) { - console.log('BUNDLE_ACTIVE SetBundleGroup callback failed. because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE SetBundleGroup callback succeeded.'); - } - }); ``` 12. 注册应用分组变化监听回调,返回注册是否成功,当应用分组发生变化时,会给所有已注册的监听者返回回调信息 @@ -399,22 +252,6 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise failed. because: ' + err.code); }); - // 异步方法callback形式 - let onBundleGroupChanged = (err,res) => { - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.'); - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s oldGroup is : ' + res.oldGroup); - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s newGroup is : ' + res.newGroup); - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s changeReason is : ' + res.newGroup); - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s userId is : ' + res.userId); - console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result‘s bundleName is : ' + res.bundleName); - }; - stats.registerGroupCallBack(onBundleGroupChanged, (err) => { - if (err) { - console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE RegisterGroupCallBack callback success.'); - } - }); ``` 13. 解除应用分组监听回调 @@ -428,15 +265,8 @@ import stats from '@ohos.bundleState'; }).catch(err => { console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise failed. because: ' + err.code); }); - // callback - stats.unRegisterGroupCallBack((err) => { - if (err) { - console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback failed, because: ' + err.code); - } else { - console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack callback success.'); - } - }); ``` + ## 相关实例 针对设备使用信息统计,有以下相关实例可供参考: - [`DeviceUsageStatistics`:设备使用信息统计(ArkTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/device/DeviceUsageStatistics) diff --git a/zh-cn/application-dev/device/usb-guidelines.md b/zh-cn/application-dev/device/usb-guidelines.md index e2d21cff2ef3da0a87305f6f5f0ae257d638cf9c..5ae59b9f4e1b5dda5ede796fa32e93616ed76999 100644 --- a/zh-cn/application-dev/device/usb-guidelines.md +++ b/zh-cn/application-dev/device/usb-guidelines.md @@ -4,7 +4,7 @@ ## 场景介绍 -Host模式下,可以获取到已经连接的设备列表,并根据需要打开和关闭设备、控制设备权限、进行数据传输等。 +Host模式下,可以获取到已经连接的USB设备列表,并根据需要打开和关闭设备、控制设备权限、进行数据传输等。 ## 接口说明 @@ -19,6 +19,7 @@ USB类开放能力如下,具体请查阅[API参考文档](../reference/apis/js | ------------------------------------------------------------ | ------------------------------------------------------------ | | hasRight(deviceName: string): boolean | 如果“使用者”(如各种App或系统)有权访问设备则返回true;无权访问设备则返回false。 | | requestRight(deviceName: string): Promise<boolean> | 请求给定软件包的临时权限以访问设备。 | +| removeRight(deviceName: string): boolean | 移除软件包对设备的访问权限。| | connectDevice(device: USBDevice): Readonly<USBDevicePipe> | 根据`getDevices()`返回的设备信息打开USB设备。 | | getDevices(): Array<Readonly<USBDevice>> | 返回USB设备列表。 | | setConfiguration(pipe: USBDevicePipe, config: USBConfig): number | 设置设备的配置。 | diff --git a/zh-cn/application-dev/reference/Readme-CN.md b/zh-cn/application-dev/reference/Readme-CN.md index c6b9716ee49861922570a40f60f2e1fd59a6756a..8f418c7d5b60e0926e4dd14e7480a7c44827ab7b 100644 --- a/zh-cn/application-dev/reference/Readme-CN.md +++ b/zh-cn/application-dev/reference/Readme-CN.md @@ -1,6 +1,6 @@ # 开发参考 - [Syscap列表](syscap-list.md) -- [组件参考(基于eTS的声明式开发范式)](arkui-ts/Readme-CN.md) +- [组件参考(基于ArkTS的声明式开发范式)](arkui-ts/Readme-CN.md) - [组件参考(兼容JS的类Web开发范式)](arkui-js/Readme-CN.md) - [JS服务卡片UI组件参考](js-service-widget-ui/Readme-CN.md) - [接口参考(JS及TS API)](apis/Readme-CN.md) diff --git a/zh-cn/application-dev/reference/apis/Readme-CN.md b/zh-cn/application-dev/reference/apis/Readme-CN.md index e4415ca0b3b823ea5ecd36115abbb5d05754ae12..5b4d405b7a5fab00cbc43783526dba30724082ba 100755 --- a/zh-cn/application-dev/reference/apis/Readme-CN.md +++ b/zh-cn/application-dev/reference/apis/Readme-CN.md @@ -87,8 +87,9 @@ - bundle/[ModuleInfo (ModuleInfo)](js-apis-bundle-ModuleInfo.md) - bundle/[PermissionDef (PermissionDef)](js-apis-bundle-PermissionDef.md) - bundle/[RemoteAbilityInfo (RemoteAbilityInfo)](js-apis-bundle-remoteAbilityInfo.md) - - bundle/[ShortcutInfo (ShortcutInfo)](js-apis-bundle-ShortcutInfo.md) + - bundle/[ShortcutInfo(deprecated) (ShortcutInfo)](js-apis-bundle-ShortcutInfo.md) - bundle/[PackInfo (PackInfo)](js-apis-bundle-PackInfo.md) + - bundleManager/[ShortcutInfo (ShortcutInfo)](js-apis-bundleManager-shortcutInfo.md) - UI界面 - [@ohos.animator (动画)](js-apis-animator.md) - [@ohos.curves (插值计算)](js-apis-curve.md) diff --git a/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePath.md b/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePath.md new file mode 100644 index 0000000000000000000000000000000000000000..738f1d435cc9b122042735559b2232af370c21ab --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePath.md @@ -0,0 +1,49 @@ +# 手势路径 + +GesturePath表示手势路径信息。 + +本模块用于创建辅助功能注入手势所需的手势路径信息。 + +>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> +>本模块首批接口从API version 9开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +```ts +import GesturePath from "@ohos.accessibility.GesturePath"; +``` + +## GesturePath + +表示手势路径信息。 + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + +### 属性 + +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| ------------ | ---------------------------------------- | ---- | ---- | ------ | +| points | Array<[GesturePoint](js-apis-accessibility-GesturePoint.md#gesturepoint)> | 是 | 是 | 手势触摸点。 | +| durationTime | number | 是 | 是 | 手势总耗时, 单位为毫秒。 | + +### constructor + +constructor(durationTime: number); + +构造函数。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| durationTime | number | 是 | 手势总耗时,单位为毫秒。 | + +**示例:** + +```typescript +let durationTime = 20; +let gesturePath = new GesturePath(durationTime); +``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePoint.md b/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePoint.md new file mode 100644 index 0000000000000000000000000000000000000000..b5a2cd1a6c1315b6d20e1cafbde2440f14880849 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-accessibility-GesturePoint.md @@ -0,0 +1,51 @@ +# 手势触摸点 + +GesturePoint表示手势触摸点。 + +本模块用于创建辅助功能注入手势所需的手势路径的触摸点信息。 + +>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> +>本模块首批接口从API version 9开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +```ts +import GesturePoint from "@ohos.accessibility.GesturePoint"; +``` + +## GesturePoint + +表示手势触摸点。 + +**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core + +### 属性 + +| 名称 | 参数类型 | 可读 | 可写 | 说明 | +| --------- | ------ | ---- | ---- | ------- | +| positionX | number | 是 | 是 | 触摸点X坐标。 | +| positionY | number | 是 | 是 | 触摸点Y坐标。 | + +### constructor + +constructor(positionX: number, positionY: number); + +构造函数。 + +**系统能力**:SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| positionX | number | 是 | 触摸点X坐标。 | +| positionY | number | 是 | 触摸点Y坐标。 | + +**示例:** + +```typescript +let positionX = 1; +let positionY = 2; +let gesturePoint = new GesturePoint(positionX, positionY); +``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-accessibility-extension-context.md b/zh-cn/application-dev/reference/apis/js-apis-accessibility-extension-context.md index a8fbb343f2b44e1e20e6be71a3005c773861774a..b82d3dfc5a8937c8c5af571e5c8088dc89415b2f 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-accessibility-extension-context.md +++ b/zh-cn/application-dev/reference/apis/js-apis-accessibility-extension-context.md @@ -1,8 +1,8 @@ -# AccessibilityExtensionContext +# 辅助功能扩展上下文 AccessibilityExtensionContext是AccessibilityExtensionAbility上下文环境,继承自ExtensionContext。 -AccessibilityExtensionContext模块提供扩展的上下文的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。 +辅助功能扩展上下文模块提供辅助功能扩展的上下文环境的能力,包括允许配置辅助应用关注信息类型、查询节点信息、手势注入等。 > **说明:** > @@ -17,7 +17,7 @@ AccessibilityExtensionContext模块提供扩展的上下文的能力,包括允 import AccessibilityExtensionAbility from '@ohos.application.AccessibilityExtensionAbility' class MainAbility extends AccessibilityExtensionAbility { onConnect(): void { - console.log("AxExtensionAbility onConnect"); + console.log('AxExtensionAbility onConnect'); let axContext = this.context; } } @@ -77,7 +77,7 @@ class MainAbility extends AccessibilityExtensionAbility { setTargetBundleName(targetNames: Array\): Promise\; -设置关注的事件类型。 +设置关注的目标包名,使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -91,19 +91,52 @@ setTargetBundleName(targetNames: Array\): Promise\; | 类型 | 说明 | | ---------------------- | --------------------- | -| Promise<boolean> | Promise对象。返回当前设置是否成功。 | +| Promise<void> | 无返回结果的Promise对象。 | **示例:** ```ts -this.context.setTargetBundleName(['com.ohos.mms']); +let targetNames = ['com.ohos.xyz']; +this.context.setTargetBundleName().then(() => { + console.info('set target bundle names success'); +}).catch((err) => { + console.error('failed to set target bundle names because ' + JSON.stringify(err)); +}); +``` + +## AccessibilityExtensionContext.setTargetBundleName + +setTargetBundleName(targetNames: Array\, callback: AsyncCallback\): void; + +设置关注的目标包名,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ------------------- | ---- | -------- | +| targetNames | Array<string> | 是 | 关注的目标包名。 | +| callback | AsyncCallback<void> | 是 | 回调函数,如果设置关注的目标包名失败,则AsyncCallback中err有数据返回。 | + +**示例:** + +```ts +let targetNames = ['com.ohos.xyz']; +this.context.setTargetBundleName().then((err, data) => { + if (err) { + console.error('failed to set target bundle names because ' + JSON.stringify(err)); + return; + } + console.info('set target bundle names success'); +}); ``` ## AccessibilityExtensionContext.getFocusElement getFocusElement(isAccessibilityFocus?: boolean): Promise\; -获取焦点元素。 +获取焦点元素, 使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -117,77 +150,296 @@ getFocusElement(isAccessibilityFocus?: boolean): Promise\; | 类型 | 说明 | | ----------------------------------- | ---------------------- | -| Promise<AccessibilityElement> | Promise对象。返回当前对应的焦点元素。 | +| Promise<AccessibilityElement> | Promise对象,返回当前对应的焦点元素。 | **示例:** ```ts -this.context.getFocusElement().then(focusElement => { - console.log("AxExtensionAbility getFocusElement success"); -}) +let focusElement; +this.context.getFocusElement().then((data) => { + focusElement = data; + console.log('get focus element success'); +}).catch((err) => { + console.error('failed to get focus element because ' + JSON.stringify(err)); +}); ``` +## AccessibilityExtensionContext.getFocusElement + +getFocusElement(callback: AsyncCallback\): void; + +获取焦点元素, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回当前对应的焦点元素。 | + +**示例:** + +```ts +let focusElement; +this.context.getFocusElement().then((err, data) => { + if (err) { + console.error('failed to get focus element because ' + JSON.stringify(err)); + return; + } + focusElement = data; + console.info('get focus element success'); +}); +``` + +## AccessibilityExtensionContext.getFocusElement + +getFocusElement(isAccessibilityFocus: boolean, callback: AsyncCallback\): void; + +获取焦点元素, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------------------- | ------- | ---- | ------------------- | +| isAccessibilityFocus | boolean | 是 | 获取的是否是无障碍焦点元素。 | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回当前对应的焦点元素。 | + +**示例:** + +```ts +let isAccessibilityFocus = true; +this.context.getFocusElement(isAccessibilityFocus).then((err, data) => { + if (err) { + console.error('failed to get focus element because ' + JSON.stringify(err)); + return; + } + focusElement = data; + console.info('get focus element success'); +}); +``` ## AccessibilityExtensionContext.getWindowRootElement getWindowRootElement(windowId?: number): Promise\; -获取窗口的根节点元素。 +获取指定窗口的根节点元素, 使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core **参数:** -| 参数名 | 参数类型 | 必填 | 说明 | -| -------- | ------ | ---- | --------------------------- | -| windowId | number | 否 | 指定获取根节点元素的窗口,未指定则从当前活跃窗口获取。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------------------- | ------- | ---- | ------------------- | +| windowId | number | 否 | 指定窗口的编号,未指定则从当前活跃窗口获取。 | **返回值:** -| 类型 | 说明 | -| ----------------------------------- | ----------------------- | -| Promise<AccessibilityElement> | Promise对象。返回当前对应的根节点元素。 | +| 类型 | 说明 | +| ----------------------------------- | ---------------------- | +| Promise<AccessibilityElement> | Promise对象,返回指定屏幕的所有窗口。 | + +**示例:** + +```ts +let rootElement; +this.context.getWindowRootElement().then((data) => { + rootElement = data; + console.log('get root element of the window success'); +}).catch((err) => { + console.error('failed to get root element of the window because ' + JSON.stringify(err)); +}); +``` + +## AccessibilityExtensionContext.getWindowRootElement + +getWindowRootElement(callback: AsyncCallback\): void; + +获取指定窗口的根节点元素, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回指定窗口的根节点元素。 | + +**示例:** + +```ts +let rootElement; +this.context.getWindowRootElement().then((err, data) => { + if (err) { + console.error('failed to get root element of the window because ' + JSON.stringify(err)); + return; + } + rootElement = data; + console.info('get root element of the window success'); +}); +``` + +## AccessibilityExtensionContext.getWindowRootElement + +getWindowRootElement(windowId: number, callback: AsyncCallback\): void; + +获取指定屏幕中的所有窗口, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------------------- | ------- | ---- | ------------------- | +| windowId | number | 是 | 指定窗口的编号,未指定则从当前活跃窗口获取。 | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回指定窗口的根节点元素。 | **示例:** ```ts -this.context.getWindowRootElement().then(rootElement => { - console.log("AxExtensionAbility getWindowRootElement success"); -}) +let displayId = 10; +let rootElement; +this.context.getWindowRootElement(displayId).then((err, data) => { + if (err) { + console.error('failed to get root element of the window because ' + JSON.stringify(err)); + return; + } + rootElement = data; + console.info('get root element of the window success'); +}); ``` ## AccessibilityExtensionContext.getWindows -getWindows(displayId?: number): Promise>; +getWindows(displayId?: number): Promise\>; -获取用户可见的窗口列表。 +获取指定屏幕中的所有窗口, 使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core **参数:** -| 参数名 | 参数类型 | 必填 | 说明 | -| --------- | ------ | ---- | ------------------------- | -| displayId | number | 否 | 指定获取窗口信息的屏幕,未指定则从默认主屏幕获取。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------------------- | ------- | ---- | ------------------- | +| displayId | number | 否 | 指定的屏幕编号,未指定则从默认主屏幕获取。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------------- | ------------------------ | -| Promise<Array<AccessibilityElement>> | Promise对象。返回当前对应的窗口列表信息。 | +| 类型 | 说明 | +| ----------------------------------- | ---------------------- | +| Promise<Array<AccessibilityElement>> | Promise对象,返回指定屏幕的所有窗口。 | **示例:** ```ts -this.context.getWindows().then(windows => { - console.log("AxExtensionAbility getWindows success"); -}) +let windows; +this.context.getWindows().then((data) => { + windows = data; + console.log('get windows success'); +}).catch((err) => { + console.error('failed to get windows because ' + JSON.stringify(err)); +}); +``` + +## AccessibilityExtensionContext.getWindows + +getWindows(callback: AsyncCallback\>): void; + +获取指定屏幕中的所有窗口, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| callback | AsyncCallback<Array<AccessibilityElement>> | 是 | 回调函数,返回指定屏幕的所有窗口。 | + +**示例:** + +```ts +let windows; +this.context.getWindows().then((err, data) => { + if (err) { + console.error('failed to get windows because ' + JSON.stringify(err)); + return; + } + windows = data; + console.info('get windows success'); +}); +``` + +## AccessibilityExtensionContext.getWindows + +getWindows(displayId: number, callback: AsyncCallback\>): void; + +获取指定屏幕中的所有窗口, 使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------------------- | ------- | ---- | ------------------- | +| displayId | number | 是 | 指定的屏幕编号,未指定则从默认主屏幕获取。 | +| callback | AsyncCallback<Array<AccessibilityElement>> | 是 | 回调函数,返回指定屏幕的所有窗口。 | + +**示例:** + +```ts +let displayId = 10; +let windows; +this.context.getWindows(displayId).then((err, data) => { + if (err) { + console.error('failed to get windows because ' + JSON.stringify(err)); + return; + } + windows = data; + console.info('get windows success'); +}); ``` ## AccessibilityExtensionContext.injectGesture +injectGesture(gesturePath: GesturePath): Promise\; + +注入手势,使用Promise异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| gesturePath | [GesturePath](js-apis-accessibility-GesturePath.md#gesturepath) | 是 | 表示手势的路径信息。 | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------- | ---------------------- | +| Promise<void> | 无返回结果的Promise对象。 | + +**示例:** + +```ts +import { GesturePath } from "../@ohos.accessibility.GesturePath"; +let gesturePath = new GesturePath(100); +for (let i = 0; i < 10; i++) { + let gesturePoint = new GesturePosition(100, i * 200); + gesturePath.positions.push(gesturePoint); +} +this.context.gestureInject(gesturePath, () => { + console.info('inject gesture success'); +}).catch((err) => { + console.error('failed to inject gesture because ' + JSON.stringify(err)); +}); +``` +## AccessibilityExtensionContext.injectGesture + injectGesture(gesturePath: GesturePath, callback: AsyncCallback\): void -注入手势。 +注入手势,使用callback异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -195,8 +447,8 @@ injectGesture(gesturePath: GesturePath, callback: AsyncCallback\): void | 参数名 | 参数类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | -------------- | -| gesturePath | [GesturePath](js-apis-application-AccessibilityExtensionAbility.md#GesturePath) | 是 | 表示手势的路径信息。 | -| callback | AsyncCallback<void> | 是 | 表示注入手势执行结果的回调。 | +| gesturePath | [GesturePath](js-apis-accessibility-GesturePath.md#gesturepath) | 是 | 表示手势的路径信息。 | +| callback | AsyncCallback<void> | 是 | 回调函数,表示注入手势执行结果的回调。 | **示例:** @@ -206,15 +458,25 @@ for (let i = 0; i < 10; i++) { let gesturePoint = new GesturePosition(100, i * 200); gesturePath.positions.push(gesturePoint); } -this.context.gestureInject(gesturePath, (result) => { - console.info('gestureInject result: ' + result); -}) +this.context.gestureInject(gesturePath, (err, data) => { + if (err) { + console.error('failed to inject gesture because ' + JSON.stringify(err)); + return; + } + console.info('inject gesture success'); +}); ``` -## AccessibilityElement.attributeNames +## AccessibilityElement9 + +无障碍节点元素。 + +**系统能力**:以下各项对应的系统能力均为SystemCapability.BarrierFree.Accessibility.Core + +## attributeNames attributeNames\(): Promise\>; -获取节点元素的所有属性名称。 +获取节点元素的所有属性名称,使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -222,28 +484,61 @@ attributeNames\(): Promise\>; | 类型 | 说明 | | ---------------------------------------- | ------------------------ | -| Promise<Array<T>> | Promise对象。返回获取元素所有属性名称的调用结果。 | +| Promise<Array<T>> | Promise对象,返回节点元素的所有属性名称。 | **示例:** ```ts let accessibilityElement; +let attributeNames; try { - accessibilityElement.attributeNames().then((values) => { - console.log("get attribute names success"); + accessibilityElement.attributeNames().then((data) => { + console.log('get attribute names success'); + attributeNames = data; }).catch((err) => { - console.log("get attribute names err: " + JSON.stringify(err)); + console.log('get attribute names err: ' + JSON.stringify(err)); }); } catch (e) { - console.log("An unexpected error occurred. Error:" + e); + console.log('An unexpected error occurred. Error:' + e); } ``` +## attributeNames + +attributeNames\(callback: AsyncCallback\>): void; + +获取节点元素的所有属性名称,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| callback | AsyncCallback<Array<T>> | 是 | 回调函数,返回节点元素的所有属性名称。 | + +**示例:** +```ts +let accessibilityElement; +let attributeNames; +try { + accessibilityElement.attributeNames().then((err, data) => { + if (err) { + console.error('failed to get attribute names because ' + JSON.stringify(err)); + return; + } + attributeNames = data; + console.info('get attribute names success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` ## AccessibilityElement.attributeValue attributeValue\(attributeName: T): Promise\; -根据属性名称获取属性值。 +根据属性名称获取属性值,使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -257,29 +552,65 @@ attributeValue\(attributeName: T): Promi | 类型 | 说明 | | ---------------------------------------- | ------------------------ | -| Promise<Array<ElementAttributeValues[T]>> | Promise对象。返回根据属性名称获取属性值的调用结果。 | +| Promise<ElementAttributeValues[T]> | Promise对象,返回根据节点属性名称获取的属性值。 | **示例:** ```ts let accessibilityElement; +let attributeValue; try { let attributeName = 'name'; - accessibilityElement.attributeValue(attributeName).then((value) => { - console.log("get attribute value by name success"); + accessibilityElement.attributeValue(attributeName).then((data) => { + console.log('get attribute value by name success'); + attribtueValue = data; }).catch((err) => { - console.log("get attribute value by name err: " + JSON.stringify(err)); + console.log('get attribute value by name err: ' + JSON.stringify(err)); }); } catch (e) { - console.log("An unexpected error occurred. Error:" + e); + console.log('An unexpected error occurred. Error:' + e); } ``` +## AccessibilityElement.attributeValue + +attributeValue\(attributeName: T, + callback: AsyncCallback\): void; + +根据属性名称获取属性值,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| attributeName | T | 是 | 表示属性的名称。 | +| callback | AsyncCallback<ElementAttributeValues[T]> | 是 | 回调函数,返回根据节点属性名称获取的属性值。 | + +**示例:** -## AccessibilityElement.actionNames +```ts +let accessibilityElement; +let attributeValue; +try { + let attributeName = 'name'; + accessibilityElement.attributeValue(attributeName).then((err, data) => { + if (err) { + console.error('failed to get attribute value because ' + JSON.stringify(err)); + return; + } + attributeValue = data; + console.info('get attribute value success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## actionNames actionNames(): Promise\>; -获取节点元素支持的所有操作名称。 +获取节点元素支持的所有操作名称,使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -287,28 +618,61 @@ actionNames(): Promise\>; | 类型 | 说明 | | ---------------------------------------- | ------------------------ | -| Promise<Array<string>> | Promise对象。返回获取节点元素支持的所有操作名称的调用结果。 | +| Promise<Array<string>> | Promise对象,返回节点元素支持的所有操作名称。 | **示例:** ```ts let accessibilityElement; +let actionNames; try { - accessibilityElement.actionNames().then((values) => { - console.log("get action names success"); + accessibilityElement.actionNames().then((data) => { + console.log('get action names success'); + actionNames = data; }).catch((err) => { - console.log("get action names err: " + JSON.stringify(err)); + console.log('get action names err: ' + JSON.stringify(err)); }); } catch (e) { - console.log("An unexpected error occurred. Error:" + e); + console.log('An unexpected error occurred. Error:' + e); } ``` +## actionNames -## AccessibilityElement.performAction +actionNames(callback: AsyncCallback\>): void; + +获取节点元素支持的所有操作名称,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| callback | AsyncCallback<Array<string>> | 是 | 回调函数,返回节点元素支持的所有操作名称。 | + +**示例:** + +```ts +let accessibilityElement; +let actionNames; +try { + accessibilityElement.actionNames().then((err, data) => { + if (err) { + console.error('failed to get action names because ' + JSON.stringify(err)); + return; + } + actionNames = data; + console.info('get action names success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## performAction performAction(actionName: string, parameters?: object): Promise\; -根据操作名称执行某个操作。 +根据操作名称执行某个操作,使用Promise异步回调。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -323,29 +687,139 @@ performAction(actionName: string, parameters?: object): Promise\; | 类型 | 说明 | | ---------------------------------------- | ------------------------ | -| Promise<Array<boolean>> | Promise对象。返回获取元素所有属性名的调用结果。 | +| Promise<boolean> | Promise对象,返回执行指定操作后的回调结果,true为执行成功,false为执行失败。 | **示例:** ```ts let accessibilityElement; +let performActionRes; try { - - accessibilityElement.performAction('action').then((result) => { - console.info('perform action result: ' + result); + accessibilityElement.performAction('action').then((data) => { + console.info('perform action success'); + performActionRes = data; }).catch((err) => { - console.log("perform action err: " + JSON.stringify(err)); + console.log('failed to perform action because ' + JSON.stringify(err)); }); } catch (e) { - console.log("An unexpected error occurred. Error:" + e); + console.log('An unexpected error occurred. Error:' + e); } ``` +## performAction + +performAction(actionName: string, callback: AsyncCallback\): void; + +根据操作名称执行某个操作,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** -## AccessibilityElement.findElement +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| actionName | string | 是 | 表示属性的名称。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数,返回执行指定操作后的回调结果,true为执行成功,false为执行失败。 | + +**示例:** + +```ts +let accessibilityElement; +let performActionRes; +try { + accessibilityElement.performAction('action').then((err, data) => { + if (err) { + console.error('failed to perform action because ' + JSON.stringify(err)); + return; + } + performActionRes = data; + console.info('perform action success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## performAction + +performAction(actionName: string, parameters: object, callback: AsyncCallback\): void; + +根据操作名称执行某个操作,使用callback异步回调。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| actionName | string | 是 | 表示属性的名称。 | +| parameters | object | 是 | 表示执行操作时所需要的参数。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数,返回执行指定操作后的回调结果,true为执行成功,false为执行失败。 | + +**示例:** + +```ts +let accessibilityElement; +let actionName = 'action'; +let parameters = { + 'setText': 'test text' +}; +let performActionRes; +try { + accessibilityElement.performAction(actionName, parameters).then((err, data) => { + if (err) { + console.error('failed to perform action because ' + JSON.stringify(err)); + return; + } + performActionRes = data; + console.info('perform action success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('content') findElement(type: 'content', condition: string): Promise\>; -查询节点元素的指定内容。 +根据节点内容查询所有节点元素。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| type | string | 是 | 固定为'content', 表示查找的类型为节点元素内容。 | +| condition | string | 是 | 表示查找的条件。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------- | ------------------------ | +| Promise<Array<AccessibilityElement>> | Promise对象,返回满足指定查询关键字的所有节点元素。 | + +**示例:** + +```ts +let accessibilityElement; +let type = 'content'; +let condition = 'keyword'; +let elements; +try { + accessibilityElement.findElement(type, condition).then((data) => { + elements = data; + console.log('find element success'); + }).catch((err) => { + console.log('failed to find element because ' + JSON.stringify(err)); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('content') + +findElement(type: 'content', condition: string, callback: AsyncCallback\>): void; + +根据节点内容查询所有节点元素。 **系统能力:** SystemCapability.BarrierFree.Accessibility.Core @@ -355,25 +829,175 @@ findElement(type: 'content', condition: string): Promise\ { + if (err) { + console.error('failed to find element because ' + JSON.stringify(err)); + return; + } + elements = data; + console.info('find element success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('focusType') + +findElement(type: 'focusType', condition: FocusType): Promise\; + +根据焦点元素类型查询节点元素。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| type | string | 是 | 固定为'focusType', 表示查询的类型为节点的焦点元素类型。 | +| condition | [FocusType](#focustype) | 是 | 表示查询焦点元素的类型。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | ------------------------ | -| Promise<Array<T>> | Promise对象。返回获取元素所有属性名的调用结果。 | +| Promise<AccessibilityElement> | Promise对象,返回满足指定查询焦点元素类型的节点元素。 | **示例:** ```ts let accessibilityElement; +let type = 'focusType'; +let condition = 'normal'; +let elements; try { - let condition = 'keyword'; - accessibilityElement.findElement('content', condition).then((values) => { - console.log("find element success"); + accessibilityElement.findElement(type, condition).then((data) => { + elements = data; + console.log('find element success'); }).catch((err) => { - console.log("find element err: " + JSON.stringify(err)); + console.log('failed to find element because ' + JSON.stringify(err)); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('focusType') + +findElement(type: 'focusType', condition: FocusType, callback: AsyncCallback\): void; + +根据焦点元素类型查询节点元素。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| type | string | 是 | 固定为'focusType', 表示查询的类型为节点的焦点元素类型。 | +| condition | [FocusType](#focustype) | 是 | 表示查询焦点元素的类型。 | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回满足指定查询焦点元素类型的节点元素。 | + +**示例:** + +```ts +let accessibilityElement; +let type = 'focusType'; +let condition = 'normal'; +let elements; +try { + accessibilityElement.findElement(type, condition).then((err, data) => { + if (err) { + console.error('failed to find element because ' + JSON.stringify(err)); + return; + } + elements = data; + console.info('find element success'); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('focusDirection') + +findElement(type: 'focusDirection', condition: FocusDirection): Promise\; + +根据下一焦点元素方向查询节点元素。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| type | string | 是 | 固定为'focusDirection', 表示查询的类型为节点的下一焦点元素方向。 | +| condition | [FocusDirection](#focusdirection) | 是 | 表示查询下一焦点元素的方向。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------- | ------------------------ | +| Promise<AccessibilityElement> | Promise对象,返回满足指定查询下一焦点元素方向的节点元素。 | + +**示例:** + +```ts +let accessibilityElement; +let type = 'focusDirection'; +let condition = 'up'; +let elements; +try { + accessibilityElement.findElement(type, condition).then((data) => { + elements = data; + console.log('find element success'); + }).catch((err) => { + console.log('failed to find element because ' + JSON.stringify(err)); + }); +} catch (e) { + console.log('An unexpected error occurred. Error:' + e); +} +``` +## findElement('focusDirection') + +findElement(type: 'focusDirection', condition: FocusDirection, callback: AsyncCallback\): void; + +根据下一焦点元素方向查询所有节点元素。 + +**系统能力:** SystemCapability.BarrierFree.Accessibility.Core + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| ----------- | ---------------------------------------- | ---- | -------------- | +| type | string | 是 | 固定为'focusDirection', 表示查询的类型为节点的下一焦点元素方向。 | +| condition | [FocusDirection](#focusdirection) | 是 | 表示下一查询焦点元素的方向。 | +| callback | AsyncCallback<AccessibilityElement> | 是 | 回调函数,返回满足指定查询下一焦点元素方向的节点元素。 | + +**示例:** + +```ts +let accessibilityElement; +let type = 'focusDirection'; +let condition = 'up'; +let elements; +try { + accessibilityElement.findElement(type, condition).then((err, data) => { + if (err) { + console.error('failed to find element because ' + JSON.stringify(err)); + return; + } + elements = data; + console.info('find element success'); }); } catch (e) { - console.log("An unexpected error occurred. Error:" + e); + console.log('An unexpected error occurred. Error:' + e); } ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-accessibility.md b/zh-cn/application-dev/reference/apis/js-apis-accessibility.md index de981f480adff501aedf34b43da4e74b905d01f9..77311ac0c1b9cc3f9c26db1b916ef21dc3d1f10f 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-accessibility.md +++ b/zh-cn/application-dev/reference/apis/js-apis-accessibility.md @@ -144,7 +144,7 @@ import accessibility from '@ohos.accessibility'; ## CaptionsManager8+ -字幕配置。 +字幕配置管理,在调用CaptionsManager的方法前,需要先通过 [accessibility.getCaptionsManager()](#accessibilitygetcaptionsmanager8)获取 captionsManager实例。 **系统能力**:以下各项对应的系统能力均为SystemCapability.BarrierFree.Accessibility.Hearing @@ -155,90 +155,92 @@ import accessibility from '@ohos.accessibility'; | enabled | boolean | 是 | 否 | 表示是否启用字幕配置。 | | style | [CaptionsStyle](#captionsstyle8) | 是 | 否 | 表示字幕风格。 | -下列 API 示例中都需要使用 [accessibility.getCaptionsManager()](#accessibilitygetcaptionsmanager8) 获取 captionsManager 实例,再通过此实例调用对应的方法。 - ### on('enableChange') on(type: 'enableChange', callback: Callback<boolean>): void; -注册字幕配置启用的监听函数。 +监听字幕配置启用状态变化事件。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 监听字幕配置启用状态。 | - | callback | Callback<boolean> | 是 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听的事件名,固定为‘enableChange’,即字幕配置启用状态变化事件。 | +| callback | Callback<boolean> | 是 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | -- **示例:** +**示例:** ```typescript - let captionsManager = accessibility.getCaptionsManager(); + let captionsManager = accessibility.getCaptionsManager(); captionsManager.on('enableChange',(data) => { console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) - }) + }); ``` ### on('styleChange') on(type: 'styleChange', callback: Callback<CaptionsStyle>): void; -注册字幕风格变化的监听函数。 +监听字幕风格变化事件。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 监听字幕风格变化。 | - | callback | Callback<[CaptionsStyle](#captionsstyle8)> | 是 | 回调函数,在字幕风格变化时通过此函数进行通知。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听的事件名,固定为‘styleChange’,即字幕风格变化事件。 | +| callback | Callback<[CaptionsStyle](#captionsstyle8)> | 是 | 回调函数,在字幕风格变化时通过此函数进行通知。 | -- **示例:** +**示例:** ```typescript - let captionsManager = accessibility.getCaptionsManager(); + let captionsManager = accessibility.getCaptionsManager(); captionsManager.on('styleChange',(data) => { console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) - }) + }); ``` ### off('enableChange') off(type: 'enableChange', callback?: Callback<boolean>): void; -移除字幕配置启用的监听函数。 +取消监听字幕配置启用状态变化事件。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 监听字幕配置启用状态。 | - | callback | Callback<boolean> | 否 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 取消监听的事件名,固定为‘enableChange’,即字幕配置启用状态变化事件。 | +| callback | Callback<boolean> | 否 | 回调函数,在字幕配置启用状态变化时将状态通过此函数进行通知。 | -- **示例:** +**示例:** ```typescript - let captionsManager = accessibility.getCaptionsManager(); - captionsManager.off('enableChange') + let captionsManager = accessibility.getCaptionsManager(); + captionsManager.off('enableChange',(data) => { + console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) + }); ``` ### off('styleChange') off(type: 'styleChange', callback?: Callback<CaptionsStyle>): void; -移除字幕风格变化的监听函数。 +取消字幕风格变化监听事件。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 字幕风格变化。 | - | callback | Callback<[CaptionsStyle](#captionsstyle8)> | 否 | 回调函数,在字幕风格变化时通过此函数进行通知。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 取消监听的事件名,固定为‘styleChange’,即字幕风格变化事件。 | +| callback | Callback<[CaptionsStyle](#captionsstyle8)> | 否 | 回调函数,在字幕风格变化时通过此函数进行通知。 | -- **示例:** +**示例:** ```typescript - let captionsManager = accessibility.getCaptionsManager(); - captionsManager.off('styleChange') + let captionsManager = accessibility.getCaptionsManager(); + captionsManager.off('styleChange',(data) => { + console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) + }); ``` ## EventInfo @@ -274,16 +276,20 @@ constructor(jsonObject) **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | jsonObject | string | 是 | 创建对象所需要的 JSON 格式字符串。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| jsonObject | string | 是 | 创建对象所需要的 JSON 格式字符串。 | -- **示例:** +**示例:** ```typescript - let eventInfo = new accessibility.EventInfo({"type":"click","bundleName":"com.example.MyApplication","triggerAction":"click"}) + let eventInfo = new accessibility.EventInfo({ + "type":"click", + "bundleName":"com.example.MyApplication", + "triggerAction":"click" + }); ``` ## EventType @@ -338,306 +344,348 @@ constructor(jsonObject) getAbilityLists(abilityType: AbilityType, stateType: AbilityState): Promise<Array<AccessibilityAbilityInfo>> -查询辅助应用列表。 +查询辅助应用列表,使用Promise异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | - | stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | +| stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | -- **返回值:** +**返回值:** - | 类型 | 说明 | - | -------- | -------- | - | Promise<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | 返回辅助应用信息列表。 | +| 类型 | 说明 | +| -------- | -------- | +| Promise<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | Promise对象,返回辅助应用信息列表。 | -- **示例:** +**示例:** - ```typescript - accessibility.getAbilityLists("spoken", "enable") - .then((data) => { - console.info('success data:getAbilityList1 : ' + JSON.stringify(data)); - for (let item of data) { - console.info(item.id); - console.info(item.name); - console.info(item.description); - console.info(item.bundleName); - } - }).catch((error) => { - console.error('failed to getAbilityList1 because ' + JSON.stringify(error)); - }) - ``` +```typescript +accessibility.getAbilityLists("spoken", "enable").then((data) => { + console.info('success data:getAbilityList1 : ' + JSON.stringify(data)); + for (let item of data) { + console.info(item.id); + console.info(item.name); + console.info(item.description); + console.info(item.bundleName); + } +}).catch((err) => { + console.error('failed to getAbilityList1 because ' + JSON.stringify(err)); +}); +``` ## accessibility.getAbilityLists getAbilityLists(abilityType: AbilityType, stateType: AbilityState,callback: AsyncCallback<Array<AccessibilityAbilityInfo>>): void -查询辅助应用列表。 +查询辅助应用列表,使用callback异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | - | stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | - | callback | AsyncCallback<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | 是 | 回调函数,返回辅助应用信息列表。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| abilityType | [AbilityType](#abilitytype) | 是 | 辅助应用的类型。 | +| stateType | [AbilityState](#abilitystate) | 是 | 辅助应用的状态。 | +| callback | AsyncCallback<Array<[AccessibilityAbilityInfo](#accessibilityabilityinfo)>> | 是 | 回调函数,返回辅助应用信息列表。 | -- **示例:** +**示例:** - ```typescript - accessibility.getAbilityLists("visual", "enable", (err, data) => { - if (err) { - console.error('failed to getAbilityList2 because ' + JSON.stringify(err)); - return; - } - console.info('success data:getAbilityList2 : ' + JSON.stringify(data)); - for (let item of data) { - console.info(item.id); - console.info(item.name); - console.info(item.description); - console.info(item.bundleName); - } - }) +```typescript +accessibility.getAbilityLists("visual", "enable", (err, data) => { + if (err) { + console.error('failed to getAbilityList2 because ' + JSON.stringify(err)); + return; + } + console.info('success data:getAbilityList2 : ' + JSON.stringify(data)); + for (let item of data) { + console.info(item.id); + console.info(item.name); + console.info(item.description); + console.info(item.bundleName); + } +}); ``` ## accessibility.getCaptionsManager8+ getCaptionsManager(): CaptionsManager -获取无障碍字幕配置。 +获取无障碍字幕配置管理实例。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Hearing -- **返回值:** +**返回值:** - | 类型 | 说明 | - | -------- | -------- | - | [CaptionsManager](#captionsmanager8) | 无障碍字幕配置管理。 | +| 类型 | 说明 | +| -------- | -------- | +| [CaptionsManager](#captionsmanager8) | 无障碍字幕配置管理。 | -- **示例:** +**示例:** - ```typescript - let captionsManager = accessibility.getCaptionsManager() - ``` +```typescript +let captionsManager = accessibility.getCaptionsManager(); +``` -## accessibility.on('accessibilityStateChange' | 'touchGuideStateChange') +## accessibility.on('accessibilityStateChange') -on(type: 'accessibilityStateChange' | 'touchGuideStateChange', callback: Callback<boolean>): void +on(type: 'accessibilityStateChange', callback: Callback<boolean>): void -启用辅助应用和触摸浏览功能的状态变化监听。 +监听辅助应用启用状态变化事件。 **系统能力**:以下各项对应的系统能力有所不同,详见下表。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 是 | 监听的事件类型。
- type 为'accessibilityStateChange'时表示监听类型为辅助功能启用状态变化监听;
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
- type 为'touchGuideStateChange'时表示监听类型为触摸浏览启用状态变化监听。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Vision | - | callback | Callback<boolean> | 是 | 回调函数,在启用状态变化时将状态通过此函数进行通知。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听的事件名,固定为‘accessibilityStateChange’,即辅助应用启用状态变化事件。 | +| callback | Callback<boolean> | 是 | 回调函数,在辅助应用启用状态变化时将状态通过此函数进行通知。 | -- **示例:** +**示例:** - ```typescript - accessibility.on('accessibilityStateChange',(data) => { - console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) - }) - ``` +```typescript +accessibility.on('accessibilityStateChange',(data) => { + console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) +}); +``` -## accessibility.off('accessibilityStateChange' | 'touchGuideStateChange') +## accessibility.on('touchGuideStateChange') -off(type: ‘accessibilityStateChange ’ | ‘touchGuideStateChange’, callback?: Callback<boolean>): void +on(type: 'touchGuideStateChange', callback: Callback<boolean>): void -关闭辅助应用和触摸浏览功能的状态变化监听。 +监听触摸浏览功能启用状态变化事件。 **系统能力**:以下各项对应的系统能力有所不同,详见下表。 -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | type | string | 否 | 监听的事件类型。
- type 为'accessibilityStateChange'时表示监听类型为辅助功能启用状态变化监听;
**系统能力**:SystemCapability.BarrierFree.Accessibility.Core
- type 为'touchGuideStateChange'时表示监听类型为触摸浏览启用状态变化监听。
**系统能力**:SystemCapability.BarrierFree.Accessibility.Vision | - | callback | Callback<boolean> | 否 | 要取消的监听回调函数。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 是 | 监听的事件名,固定为‘touchGuideStateChange’,即触摸浏览启用状态变化事件。 | +| callback | Callback<boolean> | 是 | 回调函数,在触摸浏览启用状态变化时将状态通过此函数进行通知。 | -- **示例:** +**示例:** - ```typescript - accessibility.off('accessibilityStateChange',(data) => { - console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) - }) - ``` +```typescript +accessibility.on('touchGuideStateChange',(data) => { + console.info('success data:subscribeStateObserver : ' + JSON.stringify(data)) +}); +``` + +## accessibility.off('accessibilityStateChange') + +off(type: 'accessibilityStateChange', callback?: Callback<boolean>): void + +取消监听辅助应用启用状态变化事件。 + +**系统能力**:以下各项对应的系统能力有所不同,详见下表。 + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 否 | 取消监听的事件名,固定为‘accessibilityStateChange’,即辅助应用启用状态变化事件。 | +| callback | Callback<boolean> | 否 | 回调函数,在辅助应用启用状态变化时将状态通过此函数进行通知。 | + +**示例:** + +```typescript +accessibility.off('accessibilityStateChange',(data) => { + console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) +}); +``` + +## accessibility.off('touchGuideStateChange') + +off(type: 'touchGuideStateChange', callback?: Callback<boolean>): void + +取消监听触摸浏览启用状态变化事件。 + +**系统能力**:以下各项对应的系统能力有所不同,详见下表。 + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| type | string | 否 | 取消监听的事件名,固定为‘touchGuideStateChange’,即触摸浏览启用状态变化事件。 | +| callback | Callback<boolean> | 否 | 回调函数,在触摸浏览启用状态变化时将状态通过此函数进行通知。 | + +**示例:** + +```typescript +accessibility.off('touchGuideStateChange',(data) => { + console.info('success data:unSubscribeStateObserver : ' + JSON.stringify(data)) +}); +``` ## accessibility.isOpenAccessibility isOpenAccessibility(): Promise<boolean> -判断是否启用了辅助功能。 +判断是否启用了辅助功能, 使用Promise异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **返回值:** +**返回值:** - | 类型 | 说明 | - | -------- | -------- | - | Promise<boolean> | 如果辅助功能已启用,则返回 true;否则返回 false。 | +| 类型 | 说明 | +| -------- | -------- | +| Promise<boolean> | Promise对象,如果辅助功能已启用,则返回 true;否则返回 false。 | -- **示例:** +**示例:** - ```typescript - accessibility.isOpenAccessibility() - .then((data) => { - console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) - }).catch((error) => { - console.error('failed to isOpenAccessibility because ' + JSON.stringify(error)); - }) - ``` +```typescript +accessibility.isOpenAccessibility().then((data) => { + console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) +}).catch((err) => { + console.error('failed to isOpenAccessibility because ' + JSON.stringify(err)); +}); +``` ## accessibility.isOpenAccessibility isOpenAccessibility(callback: AsyncCallback<boolean>): void -判断是否启用了辅助功能。 +判断是否启用了辅助功能,使用callback异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<boolean> | 是 | 回调函数,如果辅助功能已启用,则返回 true;否则返回 false。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数,如果辅助功能已启用,则返回 true;否则返回 false。 | -- **示例:** +**示例:** - ```typescript - accessibility.isOpenAccessibility((err, data) => { - if (err) { - console.error('failed to isOpenAccessibility because ' + JSON.stringify(err)); - return; - } - console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) - }) - ``` +```typescript +accessibility.isOpenAccessibility((err, data) => { + if (err) { + console.error('failed to isOpenAccessibility because ' + JSON.stringify(err)); + return; + } + console.info('success data:isOpenAccessibility : ' + JSON.stringify(data)) +}); +``` ## accessibility.isOpenTouchGuide isOpenTouchGuide(): Promise<boolean> -判断触摸浏览模式是否开启。 +判断触摸浏览模式是否开启, 使用Promise异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Vision -- **返回值:** +**返回值:** - | 类型 | 说明 | - | -------- | -------- | - | Promise<boolean> | 如果触摸浏览模式已开启,则返回 true;否则返回 false。 | +| 类型 | 说明 | +| -------- | -------- | +| Promise<boolean> | Promise对象,如果触摸浏览模式已开启,则返回 true;否则返回 false。 | -- **示例:** +**示例:** - ```typescript - accessibility.isOpenTouchGuide() - .then((data) => { - console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) - }).catch((error) => { - console.error('failed to isOpenTouchGuide because ' + JSON.stringify(error)); - }) - ``` +```typescript +accessibility.isOpenTouchGuide().then((data) => { + console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) +}).catch((err) => { + console.error('failed to isOpenTouchGuide because ' + JSON.stringify(err)); +}); +``` ## accessibility.isOpenTouchGuide isOpenTouchGuide(callback: AsyncCallback<boolean>): void -判断触摸浏览模式是否开启。 +判断触摸浏览模式是否开启, 使用callback异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Vision -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<boolean> | 是 | 回调函数,如果触摸浏览模式已开启,则返回 true;否则返回 false。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数,如果触摸浏览模式已开启,则返回 true;否则返回 false。 | -- **示例:** +**示例:** - ```typescript - accessibility.isOpenTouchGuide((err, data) => { - if (err) { - console.error('failed to isOpenTouchGuide because ' + JSON.stringify(err)); - return; - } - console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) - }) +```typescript +accessibility.isOpenTouchGuide((err, data) => { + if (err) { + console.error('failed to isOpenTouchGuide because ' + JSON.stringify(err)); + return; + } + console.info('success data:isOpenTouchGuide : ' + JSON.stringify(data)) +}); ``` ## accessibility.sendEvent sendEvent(event: EventInfo): Promise<void> -发送无障碍事件。 +发送无障碍事件, 使用Promise异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | event | [EventInfo](#eventinfo) | 是 | 无障碍事件对象。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| event | [EventInfo](#eventinfo) | 是 | 无障碍事件对象。 | -- **返回值:** +**返回值:** - | 类型 | 说明 | - | -------- | -------- | - | Promise<void> | 以 Promise 形式返回结果,如果发送无障碍事件成功,则 data 有数据返回;如果发送无障碍事件失败,则 err 有数据返回。 | +| 类型 | 说明 | +| -------- | -------- | +| Promise<void> | 无返回结果的Promise对象。 | -- **示例:** +**示例:** - ```typescript - let eventInfo : accessibility.EventInfo = { - type: 'focus', - bundleName: 'bundle', - triggerAction: 'focus' - } - accessibility.sendEvent(eventInfo) - .then((data) => { - console.info('success data:sendEvent : ' + JSON.stringify(data)) - }).catch((error) => { - console.error('failed to sendEvent because ' + JSON.stringify(error)); - }) - ``` +```typescript +let eventInfo = new accessibility.EventInfo({ + "type":"click", + "bundleName":"com.example.MyApplication", + "triggerAction":"click" +}); +accessibility.sendEvent(eventInfo).then(() => { + console.info('send event success'); +}).catch((err) => { + console.error('failed to sendEvent because ' + JSON.stringify(err)); +}); +``` ## accessibility.sendEvent sendEvent(event: EventInfo, callback: AsyncCallback<void>): void -发送无障碍事件。 +发送无障碍事件, 使用callback异步回调。 **系统能力**:SystemCapability.BarrierFree.Accessibility.Core -- **参数:** +**参数:** - | 参数名 | 参数类型 | 必填 | 说明 | - | -------- | -------- | -------- | -------- | - | event | [EventInfo](#eventinfo) | 是 | 辅助事件对象。 | - | callback | AsyncCallback<void> | 是 | 回调函数,如果发送无障碍事件成功,则 AsyncCallback 中 data 有数据返回;如果发送无障碍事件失败,则 AsyncCallback 中 err 有数据返回。 | +| 参数名 | 参数类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| event | [EventInfo](#eventinfo) | 是 | 辅助事件对象。 | +| callback | AsyncCallback<void> | 是 | 回调函数,如果发送无障碍事件失败,则 AsyncCallback中err有数据返回。 | -- **示例:** +**示例:** - ```typescript - let eventInfo : accessibility.EventInfo = { - type: 'focus', - bundleName: 'bundle', - triggerAction: 'focus' - } - accessibility.sendEvent(eventInfo,(err, data) => { - if (err) { - console.error('failed to sendEvent because ' + JSON.stringify(err)); - return; - } - console.info('success data:sendEvent : ' + JSON.stringify(data)) - }) +```typescript +let eventInfo = new accessibility.EventInfo({ + "type":"click", + "bundleName":"com.example.MyApplication", + "triggerAction":"click" +}); +accessibility.sendEvent(eventInfo, (err, data) => { + if (err) { + console.error('failed to sendEvent because ' + JSON.stringify(err)); + return; + } + console.info('sendEvent success'); +}); ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-appAccount.md b/zh-cn/application-dev/reference/apis/js-apis-appAccount.md index cbe6af5410c204f20bcfbe623b95bf7d71be0117..a11141d837c647265bb39b925f4d3a54d5cf6d28 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-appAccount.md +++ b/zh-cn/application-dev/reference/apis/js-apis-appAccount.md @@ -40,7 +40,7 @@ createAppAccountManager(): AppAccountManager createAccount(name: string, callback: AsyncCallback<void>): void; -将此应用的帐号名添加到帐号管理服务中,使用callback回调异步返回结果。 +将此应用的帐号名添加到帐号管理服务中。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -49,7 +49,16 @@ createAccount(name: string, callback: AsyncCallback<void>): void; | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | -------------------- | | name | string | 是 | 要添加的应用帐号名称。 | -| callback | AsyncCallback<void> | 是 | 将此应用的帐号名添加到帐号管理服务回调。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当此应用的帐号名添加到帐号管理服务成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or options. | + | 12300008 | the account indicated by name already exist. | + | 12300011 | the account number has reached the upper limit. | **示例:** @@ -66,9 +75,9 @@ createAccount(name: string, callback: AsyncCallback<void>): void; ### createAccount9+ -createAccount(name: string, extraInfo: string, callback: AsyncCallback<void>): void +createAccount(name: string, options: CreateAccountOptions, callback: AsyncCallback<void>): void -将此应用程序的帐号名和额外信息(能转换string类型的其它信息,如token)添加到帐号管理服务中,使用callback回调异步返回结果。 +将此应用程序的帐号名和额外信息(能转换string类型的其它信息,如token)添加到帐号管理服务中。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -77,15 +86,29 @@ createAccount(name: string, extraInfo: string, callback: AsyncCallback<void&g | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------- | ---- | ---------------------------------------- | | name | string | 是 | 要添加的应用帐号名称。 | -| extraInfo | string | 是 | 要添加的应用帐号的额外信息(能转换string类型的其它信息,如token等),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | -| callback | AsyncCallback<void> | 是 | 将此应用程序的帐号名和额外信息添加到帐号管理服务中回调。 | +| options | [CreateAccountOptions](#createaccountoptions9) | 是 | 要添加的应用帐号的选项,选项中不能包含应用帐号的敏感信息(如应用帐号密码)。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当此应用程序的帐号名和额外信息添加到帐号管理服务成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or options. | + | 12300008 | the account indicated by name already exist. | + | 12300011 | the account number has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.createAccount("LiSi", "token101", (err) => { + var option : CreateAccountOptions = { + customData: { + "age":10 + } + } + appAccountManager.createAccount("LiSi", option, (err) => { console.log("createAccount err: " + JSON.stringify(err)); }); } catch (err) { @@ -97,7 +120,7 @@ createAccount(name: string, extraInfo: string, callback: AsyncCallback<void&g createAccount(name: string, extraInfo?: string): Promise<void> -将此应用的帐号名或额外信息(能转换成string类型的其它信息)添加到帐号管理服务中,使用Promise方式异步返回结果。 +将此应用的帐号名或额外信息(能转换成string类型的其它信息)添加到帐号管理服务中。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -106,20 +129,34 @@ createAccount(name: string, extraInfo?: string): Promise<void> | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 要添加的应用帐号名称。 | -| extraInfo | string | 否 | 要添加的应用帐号的额外信息(能转换成string类型的其它信息),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | +| options | [CreateAccountOptions](#createaccountoptions9) | 否 | 要添加的应用帐号的选项,选项中不能包含应用帐号的敏感信息(如应用帐号密码),不填写不附带选项信息。 | **返回值:** | 类型 | 说明 | | ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or options. | + | 12300008 | the account indicated by name already exist. | + | 12300011 | the account number has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.createAccount("LiSi", "token101").then(()=> { + var option : CreateAccountOptions = { + customData: { + "age":10 + } + } + appAccountManager.createAccount("LiSi", option).then(()=> { console.log('createAccount Success'); }).catch((err) => { console.log("createAccount err: " + JSON.stringify(err)); @@ -129,98 +166,6 @@ createAccount(name: string, extraInfo?: string): Promise<void> } ``` -### addAccount(deprecated) - -addAccount(name: string, callback: AsyncCallback<void>): void - -将此应用的帐号名添加到帐号管理服务中,使用callback回调异步返回结果。 - -> **说明:** -> 从API version 9开始废弃, 建议使用[createAccount](#createaccount9)替代 -> -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------------------- | -| name | string | 是 | 要添加的应用帐号名称。 | -| callback | AsyncCallback<void> | 是 | 将此应用的帐号名添加到帐号管理服务回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.addAccount("WangWu", (err) => { - console.log("addAccount err: " + JSON.stringify(err)); - }); - ``` - -### addAccount(deprecated) - -addAccount(name: string, extraInfo: string, callback: AsyncCallback<void>): void - -将此应用程序的帐号名和额外信息(能转换string类型的其它信息,如token)添加到帐号管理服务中,使用callback回调异步返回结果。 - -> **说明:** > 从API version 9开始废弃, 建议使用[createAccount](#createaccount9-1)替代 -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------------------- | ---- | ---------------------------------------- | -| name | string | 是 | 要添加的应用帐号名称。 | -| extraInfo | string | 是 | 要添加的应用帐号的额外信息(能转换string类型的其它信息,如token等),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | -| callback | AsyncCallback<void> | 是 | 将此应用程序的帐号名和额外信息添加到帐号管理服务中回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.addAccount("LiSi", "token101", (err) => { - console.log("addAccount err: " + JSON.stringify(err)); - }); - ``` - -### addAccount(deprecated) - -addAccount(name: string, extraInfo?: string): Promise<void> - -将此应用的帐号名或额外信息(能转换成string类型的其它信息)添加到帐号管理服务中,使用Promise方式异步返回结果。 - -> **说明:** > 从API version 9开始废弃, 建议使用[createAccount](#createaccount9-2)替代 -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------ | ---- | ---------------------------------------- | -| name | string | 是 | 要添加的应用帐号名称。 | -| extraInfo | string | 否 | 要添加的应用帐号的额外信息(能转换成string类型的其它信息),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | - -**返回值:** - -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.addAccount("LiSi", "token101").then(()=> { - console.log('addAccount Success'); - }).catch((err) => { - console.log("addAccount err: " + JSON.stringify(err)); - }); - ``` - ### createAccountImplicitly9+ createAccountImplicitly(owner: string, callback: AuthCallback): void @@ -236,6 +181,15 @@ createAccountImplicitly(owner: string, callback: AuthCallback): void | owner | string | 是 | 要添加的应用帐号所有者包名。 | | callback | [AuthCallback](#authcallback9) | 是 | 认证回调,用于返回鉴权结果。 | +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or options. | + | 12300011 | the account number has reached the upper limit. | + | 12300008 | the account authenticator service does not exist. | + **示例:** ```js @@ -280,6 +234,15 @@ createAccountImplicitly(owner: string, options: CreateAccountImplicitlyOptions, | options | [CreateAccountImplicitlyOptions](#createaccountimplicitlyoptions9) | 是 | 隐式创建账号的选项。 | | callback | [AuthCallback](#authcallback9) | 是 | 认证回调,用于返回鉴权结果。 | +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or options. | + | 12300011 | the account number has reached the upper limit. | + | 12300008 | the account authenticator service does not exist. | + **示例:** ```js @@ -310,56 +273,11 @@ createAccountImplicitly(owner: string, options: CreateAccountImplicitlyOptions, ``` -### addAccountImplicitly(deprecated) - -addAccountImplicitly(owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void - -根据指定的帐号所有者、鉴权类型和可选项隐式地添加应用帐号,并使用callback回调异步返回结果。 - -> **说明:** 从API version 9开始废弃, 建议使用[createAccountImplicitly](#createaccountimplicitly9)替代。 -> -> 从 API version 8开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ----------------------- | -| owner | string | 是 | 要添加的应用帐号所有者包名。 | -| authType | string | 是 | 要添加的应用帐号鉴权类型。鉴权类型为自定义。 | -| options | {[key: string]: any} | 是 | 鉴权所需要的可选项。可选项可根据自己需要设置。 | -| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 认证器回调,用于返回鉴权结果。 | - -**示例:** - - ```js - import featureAbility from '@ohos.ability.featureAbility'; - - function onResultCallback(code, result) { - console.log("resultCode: " + code); - console.log("result: " + JSON.stringify(result)); - } - - function onRequestRedirectedCallback(request) { - let abilityStartSetting = {want: request}; - featureAbility.startAbility(abilityStartSetting, (err)=>{ - console.log("startAbility err: " + JSON.stringify(err)); - }); - } - - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.addAccountImplicitly("com.example.ohos.accountjsdemo", "getSocialData", {}, { - onResult: onResultCallback, - onRequestRedirected: onRequestRedirectedCallback - }); - ``` - ### removeAccount9+ removeAccount(name: string, callback: AsyncCallback<void>): void -从帐号管理服务中移除应用帐号,使用callback回调异步返回结果。 +从帐号管理服务中移除应用帐号。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -368,7 +286,15 @@ removeAccount(name: string, callback: AsyncCallback<void>): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------------- | | name | string | 是 | 要删除的应用帐号名称。 | -| callback | AsyncCallback<void> | 是 | 帐号管理服务中移除应用帐号的回调。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当帐号管理服务中移除应用帐号成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by name dose not exist. | **示例:** @@ -388,7 +314,7 @@ removeAccount(name: string, callback: AsyncCallback<void>): void deleteAccount(name: string): Promise<void> -从帐号管理服务中移除应用帐号,使用Promise方式异步返回结果。 +从帐号管理服务中移除应用帐号。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -402,7 +328,15 @@ deleteAccount(name: string): Promise<void> | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by name dose not exist. | **示例:** @@ -420,69 +354,6 @@ deleteAccount(name: string): Promise<void> ``` -### deleteAccount(deprecated) - -deleteAccount(name: string, callback: AsyncCallback<void>): void - -从帐号管理服务中删除应用帐号,使用callback回调异步返回结果。 - -> **说明:** 从API version 9开始废弃, 建议使用[removeAccount](#removeaccount9)替代。 -> -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ---------------- | -| name | string | 是 | 要删除的应用帐号名称。 | -| callback | AsyncCallback<void> | 是 | 帐号管理服务中删除应用帐号回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.deleteAccount("ZhaoLiu", (err) => { - console.log("deleteAccount err: " + JSON.stringify(err)); - }); - ``` - -### deleteAccount(deprecated) - -deleteAccount(name: string): Promise<void> - -从帐号管理服务中删除应用帐号,使用Promise方式异步返回结果。 - -> **说明:** 从API version 9开始废弃, 建议使用[removeAccount](#removeaccount9)替代。 -> -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | ----------- | -| name | string | 是 | 要删除的应用帐号名称。 | - -**返回值:** - -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.deleteAccount("ZhaoLiu").then(() => { - console.log('deleteAccount Success'); - }).catch((err) => { - console.log("deleteAccount err: " + JSON.stringify(err)); - }); - ``` - ### setAppAccess9+ setAppAccess(name: string, bundleName: string, isAccessible: boolean, callback: AsyncCallback<void>): void @@ -500,6 +371,15 @@ setAppAccess(name: string, bundleName: string, isAccessible: boolean, callback: | isAccessible | boolean | 是 | 访问控制,允许访问或禁止访问。 | | callback | AsyncCallback<void> | 是 | 访问权限设置的回调。 | +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or bundlename. | + | 12300003 | the account indicated by localId dose not exist. | + | 12400001 | the application indicated by bundlename does not exist. | + **示例:** ```js @@ -518,7 +398,7 @@ setAppAccess(name: string, bundleName: string, isAccessible: boolean, callback: setAppAccess(name: string, bundleName: string, isAccessible: boolean): Promise<void> -设置指定第三方应用帐号名称对指定包名称的第三方应用的访问权限,由isAccessible指明是允许访问还是禁止访问,使用Promise方式异步返回结果。 +设置指定第三方应用帐号名称对指定包名称的第三方应用的访问权限,由isAccessible指明是允许访问还是禁止访问。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -534,7 +414,16 @@ setAppAccess(name: string, bundleName: string, isAccessible: boolean): Promise&l | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or bundlename. | + | 12300003 | the account indicated by localId dose not exist. | + | 12400001 | the application indicated by bundlename does not exist. | **示例:** @@ -551,15 +440,11 @@ setAppAccess(name: string, bundleName: string, isAccessible: boolean): Promise&l } ``` -### disableAppAccess(deprecated) - -disableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void +### checkAppAccess9+ -禁止指定第三方应用帐号名称对指定的第三方应用进行访问,使用callback回调异步返回结果。 +checkAppAccess(name: string, bundleName: string, callback: AsyncCallback<boolean>): void -> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9)替代。 -> -> 从 API version 7开始支持。 +查看指定第三方应用帐号名称对指定包名称的第三方应用的访问权限,callback回调异步返回结果。 **系统能力:** SystemCapability.Account.AppAccount @@ -567,170 +452,62 @@ disableAppAccess(name: string, bundleName: string, callback: AsyncCallback<vo | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------- | ---- | --------------------------------- | -| name | string | 是 | 要禁用访问的第三方应用帐号名称。 | +| name | string | 是 | 应用帐号名称。 | | bundleName | string | 是 | 第三方应用的包名。 | -| callback | AsyncCallback<void> | 是 | 禁止指定第三方应用帐号名称对指定包名称的第三方应用进行访问的回调。 | +| callback | AsyncCallback<void> | 是 | 查看访问权限的回调。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or bundlename. | + | 12300003 | the account indicated by localId dose not exist. | + | 12400001 | the application indicated by bundlename does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.disableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { - console.log("disableAppAccess err: " + JSON.stringify(err)); - }); - ``` + try { + appAccountManager.checkAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { + console.log("checkAppAccess: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("checkAppAccess: " + JSON.stringify(err)); + } -### disableAppAccess(deprecated) + ``` -disableAppAccess(name: string, bundleName: string): Promise<void> +### checkAppAccess9+ -禁止指定第三方应用帐号名称对指定包名称的第三方应用进行访问,使用Promise方式异步返回结果。 +checkAppAccess(name: string, bundleName: string): Promise<void> -> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9-1)替代。 -> -> 从 API version 7开始支持。 +查看指定第三方应用帐号名称对指定包名称的第三方应用的访问权限。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | ---------------- | -| name | string | 是 | 要禁用访问的第三方应用帐号名称。 | -| bundleName | string | 是 | 第三方应用的包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| bundleName | string | 是 | 第三方应用的包名。 | **返回值:** | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | -**示例:** +**错误码:** - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.disableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo").then(() => { - console.log('disableAppAccess Success'); - }).catch((err) => { - console.log("disableAppAccess err: " + JSON.stringify(err)); - }); - ``` - -### enableAppAccess(deprecated) - -enableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void - -允许指定第三方应用帐号名称对指定包名称的第三方应用进行访问,使用callback回调异步返回结果。 - -> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9)替代。 -> -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------- | ---- | --------------------------------- | -| name | string | 是 | 应用帐号名称。 | -| bundleName | string | 是 | 第三方应用的包名。 | -| callback | AsyncCallback<void> | 是 | 允许指定第三方应用帐号名称对指定包名称的第三方应用进行访问的回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.enableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { - console.log("enableAppAccess: " + JSON.stringify(err)); - }); - ``` - -### enableAppAccess(deprecated) - -enableAppAccess(name: string, bundleName: string): Promise<void> - -允许指定第三方应用帐号的名称对指定包名称的第三方应用进行访问,使用Promise方式异步返回结果。 - -> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9-1)替代。 -> -> 从 API version 7开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| bundleName | string | 是 | 第三方应用的包名。 | - -**返回值:** - -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.enableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo").then(() => { - console.log('enableAppAccess Success'); - }).catch((err) => { - console.log("enableAppAccess err: " + JSON.stringify(err)); - }); - ``` - -### checkAppAccess9+ - -checkAppAccess(name: string, bundleName: string, callback: AsyncCallback<boolean>): void - -查看指定第三方应用帐号名称对指定包名称的第三方应用的访问权限,callback回调异步返回结果。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------- | ---- | --------------------------------- | -| name | string | 是 | 应用帐号名称。 | -| bundleName | string | 是 | 第三方应用的包名。 | -| callback | AsyncCallback<void> | 是 | 查看访问权限的回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.checkAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { - console.log("checkAppAccess: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("checkAppAccess: " + JSON.stringify(err)); - } - - ``` - -### checkAppAccess9+ - -checkAppAccess(name: string, bundleName: string): Promise<void> - -查看指定第三方应用帐号名称对指定包名称的第三方应用的访问权限,使用Promise方式异步返回结果。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| bundleName | string | 是 | 第三方应用的包名。 | - -**返回值:** - -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or bundlename. | + | 12300003 | the account indicated by localId dose not exist. | + | 12400001 | the application indicated by bundlename does not exist. | **示例:** @@ -752,7 +529,7 @@ checkAppAccess(name: string, bundleName: string): Promise<void> checkDataSyncEnabled(name: string, callback: AsyncCallback<boolean>): void -检查指定应用帐号是否允许应用数据同步,使用callback回调异步返回结果。 +检查指定应用帐号是否允许应用数据同步。使用callback异步回调。 **需要权限:** ohos.permission.DISTRIBUTED_DATASYNC @@ -763,7 +540,15 @@ checkDataSyncEnabled(name: string, callback: AsyncCallback<boolean>): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | --------------------- | | name | string | 是 | 应用帐号名称。 | -| callback | AsyncCallback<boolean> | 是 | 检查指定应用帐号是否允许应用数据同步回调。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示指定应用帐号允许应用数据同步;返回false表示指定应用帐号不允许应用数据同步。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by localId dose not exist. | **示例:** @@ -784,7 +569,7 @@ checkDataSyncEnabled(name: string, callback: AsyncCallback<boolean>): void checkDataSyncEnabled(name: string): Promise<boolean> -检查指定应用帐号是否允许应用数据同步,使用Promise方式异步返回结果。 +检查指定应用帐号是否允许应用数据同步。使用Promise异步回调。 **需要权限:** ohos.permission.DISTRIBUTED_DATASYNC @@ -800,7 +585,15 @@ checkDataSyncEnabled(name: string): Promise<boolean> | 类型 | 说明 | | :--------------------- | :-------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果。 | +| Promise<boolean> | Promise对象。返回true表示允许应用数据同步;返回false表示不允许应用数据同步。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by localId dose not exist. | **示例:** @@ -818,79 +611,11 @@ checkDataSyncEnabled(name: string): Promise<boolean> ``` -### checkAppAccountSyncEnable(deprecated) - -checkAppAccountSyncEnable(name: string, callback: AsyncCallback<boolean>): void - -检查指定应用帐号是否允许应用数据同步,使用callback回调异步返回结果。 - -> **说明:** 从API version 9开始废弃。建议使用[checkDataSyncEnabled](#checkdatasyncenabled9)替代。 -> -> 从 API version 7开始支持。 - -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | --------------------- | -| name | string | 是 | 应用帐号名称。 | -| callback | AsyncCallback<boolean> | 是 | 检查指定应用帐号是否允许应用数据同步回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.checkAppAccountSyncEnable("ZhangSan", (err, result) => { - console.log("checkAppAccountSyncEnable err: " + JSON.stringify(err)); - console.log('checkAppAccountSyncEnable result: ' + result); - }); - ``` - -### checkAppAccountSyncEnable(deprecated) - -checkAppAccountSyncEnable(name: string): Promise<boolean> - -检查指定应用帐号是否允许应用数据同步,使用Promise方式异步返回结果。 - -> **说明:** 从API version 9开始废弃。建议使用[checkDataSyncEnabled](#checkdatasyncenabled9-1)替代。 -> -> 从 API version 7开始支持。 - -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | ------- | -| name | string | 是 | 应用帐号名称。 | - -**返回值:** - -| 类型 | 说明 | -| :--------------------- | :-------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.checkAppAccountSyncEnable("ZhangSan").then((data) => { - console.log('checkAppAccountSyncEnable, result: ' + data); - }).catch((err) => { - console.log("checkAppAccountSyncEnable err: " + JSON.stringify(err)); - }); - ``` - ### setCredential9+ setCredential(name: string, credentialType: string, credential: string,callback: AsyncCallback<void>): void -设置此应用程序帐号的凭据,使用callback回调异步返回结果。 +设置此应用程序帐号的凭据。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount @@ -901,7 +626,15 @@ setCredential(name: string, credentialType: string, credential: string,callback: | name | string | 是 | 应用程序帐号名称。 | | credentialType | string | 是 | 要设置的凭据类型。 | | credential | string | 是 | 要设置的凭据。 | -| callback | AsyncCallback<void> | 是 | 设置此应用帐号的凭据回调。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置此应用程序帐号的凭据成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300003 | the account indicated by localId dose not exist. | **示例:** @@ -920,7 +653,7 @@ setCredential(name: string, credentialType: string, credential: string,callback: setCredential(name: string, credentialType: string, credential: string): Promise<void> -设置此应用程序帐号的凭据,使用Promise方式异步返回结果。 +设置此应用程序帐号的凭据。使用Promise异步回调。 > **说明:** 从API version 9开始废弃。 > @@ -940,7 +673,15 @@ setCredential(name: string, credentialType: string, credential: string): Promise | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300003 | the account indicated by localId dose not exist. | **示例:** @@ -957,2908 +698,3708 @@ setCredential(name: string, credentialType: string, credential: string): Promise } ``` + +### setDataSyncEnabled9+ -### setAccountCredential(deprecated) - -setAccountCredential(name: string, credentialType: string, credential: string,callback: AsyncCallback<void>): void +setDataSyncEnabled(name: string, isEnable: boolean, callback: AsyncCallback<void>): void -设置此应用程序帐号的凭据,使用callback回调异步返回结果。 +设置指定的应用程序帐号是否允许应用程序数据同步。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[setCredential](#setcredential9)替代。 -> -> 从 API version 7开始支持。 +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------------------------- | ---- | ------------- | -| name | string | 是 | 应用程序帐号名称。 | -| credentialType | string | 是 | 要设置的凭据类型。 | -| credential | string | 是 | 要设置的凭据。 | -| callback | AsyncCallback<void> | 是 | 设置此应用帐号的凭据回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------------------- | +| name | string | 是 | 应用帐号名称。 | +| isEnable | boolean | 是 | 是否允许应用数据同步。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当指定的应用帐号是否允许应用程序数据设置成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by name dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAccountCredential("ZhangSan", "credentialType001", "credential001", (err) => { - console.log("setAccountCredential err: " + JSON.stringify(err)); - }); + try { + appAccountManager.setDataSyncEnabled("ZhangSan", true, (err) => { + console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + } ``` -### setAccountCredential(deprecated) +### setDataSyncEnabled9+ -setAccountCredential(name: string, credentialType: string, credential: string): Promise<void> +setDataSyncEnabled(name: string, isEnable: boolean): Promise<void> -设置此应用程序帐号的凭据,使用Promise方式异步返回结果。 +设置指定的应用程序帐号是否允许应用程序数据同步。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[setCredential](#setcredential9-1)替代。 -> -> 从 API version 7开始支持。 +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------ | ---- | ---------- | -| name | string | 是 | 应用帐号的名称。 | -| credentialType | string | 是 | 要设置的凭据的类型。 | -| credential | string | 是 | 要设置的凭据。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------- | ---- | ----------- | +| name | string | 是 | 应用帐号名称。 | +| isEnable | boolean | 是 | 是否允许应用数据同步。 | **返回值:** | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name. | + | 12300003 | the account indicated by name dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAccountCredential("ZhangSan", "credentialType001", "credential001").then(() => { - console.log('setAccountCredential Success'); - }).catch((err) => { - console.log("setAccountCredential err: " + JSON.stringify(err)); - }); + try { + appAccountManager .setDataSyncEnabled("ZhangSan", true).then(() => { + console.log('setDataSyncEnabled Success'); + }).catch((err) => { + console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + } ``` -### setAccountExtraInfo(deprecated) +### setCustomData9+ -setAccountExtraInfo(name: string, extraInfo: string, callback: AsyncCallback<void>): void - -设置此应用程序帐号的额外信息,使用callback回调异步返回结果。 - -> **说明:** 从API version 9开始废弃。 -> -> 从 API version 7开始支持。 +setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void +设置与此应用程序帐号关联的数据。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------------------- | ---- | --------------- | -| name | string | 是 | 应用帐号名称。 | -| extraInfo | string | 是 | 要设置的额外信息。 | -| callback | AsyncCallback<void> | 是 | 设置此应用帐号的额外信息回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | +| value | string | 是 | 要设置的数据的值。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置与此应用帐号关联的数据成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, key or value. | + | 12300003 | the account indicated by name dose not exist. | + | 12400008 | the number of customized data has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAccountExtraInfo("ZhangSan", "Tk002", (err) => { - console.log("setAccountExtraInfo err: " + JSON.stringify(err)); - }); + try { + appAccountManager.setCustomData("ZhangSan", "k001", "v001", (err) => { + console.log("setCustomData err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("setCustomData err: " + JSON.stringify(err)); + } ``` -### setAccountExtraInfo(deprecated) - -setAccountExtraInfo(name: string, extraInfo: string): Promise<void> - -设置此应用程序帐号的额外信息,使用Promise方式异步返回结果。 +### setCustomData9+ -> **说明:** 从API version 9开始废弃。 -> -> 从 API version 7开始支持。 +setAssociatedData(name: string, key: string, value: string): Promise<void> +设置与此应用程序帐号关联的数据。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| extraInfo | string | 是 | 要设置的额外信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | +| value | string | 是 | 要设置的数据的值。 | **返回值:** | 类型 | 说明 | | :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, key or value. | + | 12300003 | the account indicated by name dose not exist. | + | 12400008 | the number of customized data has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAccountExtraInfo("ZhangSan", "Tk002").then(() => { - console.log('setAccountExtraInfo Success'); - }).catch((err) => { - console.log("setAccountExtraInfo err: " + JSON.stringify(err)); - }); + try { + appAccountManager.setCustomData("ZhangSan", "k001", "v001").then(() => { + console.log('setCustomData Success'); + }).catch((err) => { + console.log("setCustomData err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("setCustomData err: " + JSON.stringify(err)); + } ``` - -### setDataSyncEnabled9+ -setDataSyncEnabled(name: string, isEnable: boolean, callback: AsyncCallback<void>): void +### getAllAccounts9+ -设置指定的应用程序帐号是否允许应用程序数据同步,使用callback回调异步返回结果。 +getAllAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC +获取全部应用已授权帐号信息。 + +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------------------- | -| name | string | 是 | 应用帐号名称。 | -| isEnable | boolean | 是 | 是否允许应用数据同步。 | -| callback | AsyncCallback<void> | 是 | 设置指定的应用帐号是否允许应用程序数据同步的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | --------- | +| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.setDataSyncEnabled("ZhangSan", true, (err) => { - console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + appAccountManager.getAllAccounts((err, data)=>{ + console.debug("getAllAccounts err:" + JSON.stringify(err)); + console.debug("getAllAccounts data:" + JSON.stringify(data)); }); } catch (err) { - console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + console.debug("getAllAccounts err:" + JSON.stringify(err)); } ``` -### setDataSyncEnabled9+ +### getAllAccounts9+ -setDataSyncEnabled(name: string, isEnable: boolean): Promise<void> +getAllAccounts(): Promise<Array<AppAccountInfo>> -设置指定的应用程序帐号是否允许应用程序数据同步,使用Promise方式异步返回结果。 +获取全部应用已授权帐号信息。 -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount -**参数:** +**返回值:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------- | ---- | ----------- | -| name | string | 是 | 应用帐号名称。 | -| isEnable | boolean | 是 | 是否允许应用数据同步。 | +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise对象。返回全部应用已授权帐号信息对象。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager .setDataSyncEnabled("ZhangSan", true).then(() => { - console.log('setDataSyncEnabled Success'); + appAccountManager.getAllAccounts().then((data) => { + console.log('getAllAccounts: ' + data); }).catch((err) => { - console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + console.log("getAllAccounts err: " + JSON.stringify(err)); }); } catch (err) { - console.log("setDataSyncEnabled err: " + JSON.stringify(err)); + console.log("getAllAccounts err: " + JSON.stringify(err)); } ``` -### setAppAccountSyncEnable(deprecated) - -setAppAccountSyncEnable(name: string, isEnable: boolean, callback: AsyncCallback<void>): void +### getAccountsByOwner9+ -设置指定的应用程序帐号是否允许应用程序数据同步,使用callback回调异步返回结果。 +getAccountsByOwner(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void -> **说明:** 从API version 9开始废弃, 建议使用[setDataSyncEnabled](#setdatasyncenabled9)替代。 -> -> 从 API version 7开始支持。 +获取指定应用全部帐号信息。 -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------------------- | -| name | string | 是 | 应用帐号名称。 | -| isEnable | boolean | 是 | 是否允许应用数据同步。 | -| callback | AsyncCallback<void> | 是 | 设置指定的应用帐号是否允许应用程序数据同步的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | --------- | +| owner | string | 是 | 应用包名称。 | +| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner. | + | 12300003 | the account indicated by owner dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAppAccountSyncEnable("ZhangSan", true, (err) => { - console.log("setAppAccountSyncEnable err: " + JSON.stringify(err)); - }); + const selfBundle = "com.example.actsgetallaaccounts"; + try { + appAccountManager.getAccountsByOwner(selfBundle, (err, data)=>{ + console.debug("getAccountsByOwner err:" + JSON.stringify(err)); + console.debug("getAccountsByOwner data:" + JSON.stringify(data)); + }); + } catch (err) { + console.debug("getAccountsByOwner err:" + JSON.stringify(err)); + } ``` -### setAppAccountSyncEnable(deprecated) - -setAppAccountSyncEnable(name: string, isEnable: boolean): Promise<void> +### getAccountsByOwner9+ -设置指定的应用程序帐号是否允许应用程序数据同步,使用Promise方式异步返回结果。 +getAccountsByOwner(owner: string): Promise<Array<AppAccountInfo>> -> **说明:** 从API version 9开始废弃, 建议使用[setDataSyncEnabled](#setdatasyncenabled9-1)替代。 -> -> 从 API version 7开始支持。 +获取指定应用全部帐号信息。 -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------- | ---- | ----------- | -| name | string | 是 | 应用帐号名称。 | -| isEnable | boolean | 是 | 是否允许应用数据同步。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ------ | +| owner | string | 是 | 应用包名称。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise对象。返回指定应用全部帐号信息对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner. | + | 12300003 | the account indicated by owner dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager .setAppAccountSyncEnable("ZhangSan", true).then(() => { - console.log('setAppAccountSyncEnable Success'); - }).catch((err) => { - console.log("setAppAccountSyncEnable err: " + JSON.stringify(err)); - }); + const selfBundle = "com.example.actsgetallaaccounts"; + try { + appAccountManager.getAccountsByOwner(selfBundle).then((data) => { + console.log('getAccountsByOwner: ' + data); + }).catch((err) => { + console.log("getAccountsByOwner err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("getAccountsByOwner err: " + JSON.stringify(err)); + } ``` -### setCustomData9+ +### getCredential9+ -setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void +getCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void -设置与此应用程序帐号关联的数据,使用callback回调异步返回结果。 +获取此应用帐号的凭据(如数字密码、人脸和PIN码等)。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | -| value | string | 是 | 要设置的数据的值。 | -| callback | AsyncCallback<void> | 是 | 设置与此应用帐号关联的数据的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | --------------------------- | ---- | -------------- | +| name | string | 是 | 应用帐号名称。 | +| credentialType | string | 是 | 获取此应用帐号的凭据的类型。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取此应用帐号的凭据成功时,err为undefined,data返回此应用帐号的凭据对象;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300003 | the account indicated by name dose not exist. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.setCustomData("ZhangSan", "k001", "v001", (err) => { - console.log("setCustomData err: " + JSON.stringify(err)); - }); + appAccountManager.getCredential("ZhangSan", "credentialType001", (err, result) => { + console.log("getCredential err: " + JSON.stringify(err)); + console.log('getCredential result: ' + result); + }); } catch (err) { - console.log("setCustomData err: " + JSON.stringify(err)); + console.log("getCredential err: " + JSON.stringify(err)); } ``` -### setCustomData9+ +### getCredential9+ -setAssociatedData(name: string, key: string, value: string): Promise<void> +getCredential(name: string, credentialType: string): Promise<string> -设置与此应用程序帐号关联的数据,使用Promise方式异步返回结果。 +获取此应用程序帐号的凭据。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | -| value | string | 是 | 要设置的数据的值。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------ | ---- | ---------- | +| name | string | 是 | 应用帐号名称。 | +| credentialType | string | 是 | 要获取的凭据的类型。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| Promise<string> | Promise对象。返回此应用程序帐号的凭据对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300003 | the account indicated by name dose not exist. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.setCustomData("ZhangSan", "k001", "v001").then(() => { - console.log('setCustomData Success'); + appAccountManager.getCredential("ZhangSan", "credentialType001").then((data) => { + console.log('getCredential, result: ' + data); }).catch((err) => { - console.log("setCustomData err: " + JSON.stringify(err)); + console.log("getCredential err: " + JSON.stringify(err)); }); } catch (err) { - console.log("setCustomData err: " + JSON.stringify(err)); + console.log("getCredential err: " + JSON.stringify(err)); } ``` -### setAssociatedData(deprecated) - -setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void - -设置与此应用程序帐号关联的数据,使用callback回调异步返回结果。 +### getCustomData9+ -> **说明:** 从API version 9开始废弃, 建议使用[setCustomData](#setcustomdata9)替代。 -> -> 从 API version 7开始支持。 +getCustomData(name: string, key: string, callback: AsyncCallback<string>): void +获取与此应用程序帐号关联的数据。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | -| value | string | 是 | 要设置的数据的值。 | -| callback | AsyncCallback<void> | 是 | 设置与此应用帐号关联的数据的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要获取的数据的键。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取与此应用程序帐号关联的数据成功时,err为undefined,data返回与此应用程序帐号关联的数据对象;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or key. | + | 12300003 | the account indicated by name dose not exist. | + | 12400009 | the customData does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAssociatedData("ZhangSan", "k001", "v001", (err) => { - console.log("setAssociatedData err: " + JSON.stringify(err)); - }); + try { + appAccountManager.getCustomData("ZhangSan", "k001", (err, result) => { + console.log("getCustomData err: " + JSON.stringify(err)); + console.log('getCustomData result: ' + result); + }); + } catch (err) { + console.log("getCustomData err: " + JSON.stringify(err)); + } ``` -### setAssociatedData(deprecated) - -setAssociatedData(name: string, key: string, value: string): Promise<void> - -设置与此应用程序帐号关联的数据,使用Promise方式异步返回结果。 +### getCustomData9+ -> **说明:** 从API version 9开始废弃, 建议使用[setCustomData](#setcustomdata9-1)替代。 -> -> 从 API version 7开始支持。 +getCustomData(name: string, key: string): Promise<string> +获取与此应用程序帐号关联的数据。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | -| value | string | 是 | 要设置的数据的值。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要获取的数据的键。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :-------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setAssociatedData("ZhangSan", "k001", "v001").then(() => { - console.log('setAssociatedData Success'); - }).catch((err) => { - console.log("setAssociatedData err: " + JSON.stringify(err)); - }); - ``` - -### getAllAccounts9+ - -getAllAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void - -获取全部应用已授权帐号信息。 - -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 - -**系统能力:** SystemCapability.Account.AppAccount +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| Promise<string> | Promise对象。返回与此应用程序帐号关联的数据对象。 | -**参数:** +**错误码:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | --------- | -| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or key. | + | 12300003 | the account indicated by name dose not exist. | + | 12400009 | the customData does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getAllAccounts((err, data)=>{ - console.debug("getAllAccounts err:" + JSON.stringify(err)); - console.debug("getAllAccounts data:" + JSON.stringify(data)); + appAccountManager.getCustomData("ZhangSan", "k001").then((data) => { + console.log('getCustomData: ' + data); + }).catch((err) => { + console.log("getCustomData err: " + JSON.stringify(err)); }); } catch (err) { - console.debug("getAllAccounts err:" + JSON.stringify(err)); + console.log("getCustomData err: " + JSON.stringify(err)); } ``` -### getAllAccounts9+ - -getAllAccounts(): Promise<Array<AppAccountInfo>> +### getCustomDataSync9+ -获取全部应用已授权帐号信息。 +getCustomDataSync(name: string, key: string): string; -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +获取与此应用程序帐号关联的数据,使用同步方式返回结果。 **系统能力:** SystemCapability.Account.AppAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要获取的数据的键。 | + **返回值:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| string | 目标关联数据的取值。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or key. | + | 12300003 | the account indicated by name dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getAllAccounts().then((data) => { - console.log('getAllAccounts: ' + data); - }).catch((err) => { - console.log("getAllAccounts err: " + JSON.stringify(err)); - }); + var backData = appAccountManager.getCustomDataSync("ZhangSan", "k001"); + console.info("getCustomDataSync backData:" + JSON.stringify(backData)); } catch (err) { - console.log("getAllAccounts err: " + JSON.stringify(err)); + console.error(`getCustomDataSync err, code is ${e.code}, message is ${e.message}`); } ``` -### getAllAccessibleAccounts(deprecated) - -getAllAccessibleAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void - -获取全部应用已授权帐号信息。 +### on('accountChange')9+ -> **说明:** 从API version 9开始废弃, 建议使用[getAllAccounts](#getallaccounts9)替代。 -> -> 从 API version 7开始支持。 +on(type: 'accountChange', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +订阅指定帐号所有者的帐户变更事件。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | --------- | -| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------ | +| type | 'accountChange' | 是 | 事件回调类型,支持的事件为'accountChange',当帐号所有者更新帐号时,触发该事件。 | +| owners | Array<string> | 是 | 指示帐号的所有者。 | +| callback | Callback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 回调函数。返回指定帐号所有者更新的帐号信息对象数组。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid type or owners. | + | 12300003 | the account indicated by owners dose not exist. | + | 12300005 | the listener has been registered. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAllAccessibleAccounts((err, data)=>{ - console.debug("getAllAccessibleAccounts err:" + JSON.stringify(err)); - console.debug("getAllAccessibleAccounts data:" + JSON.stringify(data)); - }); + function changeOnCallback(data){ + console.debug("receive change data:" + JSON.stringify(data)); + } + try{ + appAccountManager.on('accountChange', ["com.example.actsaccounttest"], changeOnCallback); + } + catch(err){ + console.error("on accountOnOffDemo err:" + JSON.stringify(err)); + } ``` -### getAllAccessibleAccounts(deprecated) +### off('accountChange')9+ -getAllAccessibleAccounts(): Promise<Array<AppAccountInfo>> +off(type: 'accountChange', callback?: Callback>): void -获取全部应用已授权帐号信息。 +取消订阅帐号事件。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[getAllAccounts](#getallaccounts9-1)替代。 -> -> 从 API version 7开始支持。 +**系统能力:** SystemCapability.Account.AppAccount -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +**参数:** -**系统能力:** SystemCapability.Account.AppAccount +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------- | ---- | ------------ | +| type | 'accountChange' | 是 | 事件回调类型,支持的事件为'accountChange',当帐号所有者更新帐号时,触发该事件。 | +| callback | Callback> | 否 | 回调函数,返回指定帐号所有者更新的帐号信息数组。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid type. | + | 12300005 | the listener has been registered. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAllAccessibleAccounts().then((data) => { - console.log('getAllAccessibleAccounts: ' + data); - }).catch((err) => { - console.log("getAllAccessibleAccounts err: " + JSON.stringify(err)); - }); + function changeOnCallback(data){ + console.debug("receive change data:" + JSON.stringify(data)); + appAccountManager.off('accountChange', function(){ + console.debug("off finish"); + }) + } + try{ + appAccountManager.on('accountChange', ["com.example.actsaccounttest"], changeOnCallback); + } + catch(err){ + console.error("on accountOnOffDemo err:" + JSON.stringify(err)); + } ``` -### getAccountsByOwner9+ - -getAccountsByOwner(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void +### auth9+ -获取指定应用全部帐号信息。 +auth(name: string, owner: string, authType: string, callback: AuthCallback): void -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +对应用帐户进行鉴权以获取Auth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | --------- | -| owner | string | 是 | 应用包名称。 | -| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | --------------- | +| name | string | 是 | 要鉴权的应用帐号名称。 | +| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| callback | [AuthCallback](#authcallback9) | 是 | 回调函数。返回鉴权结果对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12300016 | authentication timeout. | + | 12300017 | authentication service is busy. | + | 12300018 | authentication service is locked. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js + import featureAbility from '@ohos.ability.featureAbility'; + + function onResultCallback(code, result) { + console.log("resultCode: " + code); + console.log("result: " + JSON.stringify(result)); + } + + function onRequestRedirectedCallback(request) { + let abilityStartSetting = {want: request}; + featureAbility.startAbility(abilityStartSetting, (err)=>{ + console.log("startAbility err: " + JSON.stringify(err)); + }); + } + const appAccountManager = account_appAccount.createAppAccountManager(); - const selfBundle = "com.example.actsgetallaaccounts"; try { - appAccountManager.getAccountsByOwner(selfBundle, (err, data)=>{ - console.debug("getAccountsByOwner err:" + JSON.stringify(err)); - console.debug("getAccountsByOwner data:" + JSON.stringify(data)); + appAccountManager.auth("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", { + onResult: onResultCallback, + onRequestRedirected: onRequestRedirectedCallback }); } catch (err) { - console.debug("getAccountsByOwner err:" + JSON.stringify(err)); + console.log("auth err: " + JSON.stringify(err)); } ``` -### getAccountsByOwner9+ - -getAccountsByOwner(owner: string): Promise<Array<AppAccountInfo>> +### auth9+ -获取指定应用全部帐号信息。 +auth(name: string, owner: string, authType: string, options: {[key: string]: Object}, callback: AuthCallback): void -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +对应用帐户进行鉴权以获取OAuth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ------ | -| owner | string | 是 | 应用包名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | --------------- | +| name | string | 是 | 要鉴权的应用帐号名称。 | +| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| options | {[key: string]: Object} | 是 | 鉴权所需的可选项。 | +| callback | [AuthCallback](#authcallback9) | 是 | 回调函数。返回鉴权结果对象。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12300016 | authentication timeout. | + | 12300017 | authentication service is busy. | + | 12300018 | authentication service is locked. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js + import featureAbility from '@ohos.ability.featureAbility'; + + function onResultCallback(code, result) { + console.log("resultCode: " + code); + console.log("result: " + JSON.stringify(result)); + } + + function onRequestRedirectedCallback(request) { + let abilityStartSetting = {want: request}; + featureAbility.startAbility(abilityStartSetting, (err)=>{ + console.log("startAbility err: " + JSON.stringify(err)); + }); + } + const appAccountManager = account_appAccount.createAppAccountManager(); - const selfBundle = "com.example.actsgetallaaccounts"; try { - appAccountManager.getAccountsByOwner(selfBundle).then((data) => { - console.log('getAccountsByOwner: ' + data); - }).catch((err) => { - console.log("getAccountsByOwner err: " + JSON.stringify(err)); + appAccountManager.auth("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", {}, { + onResult: onResultCallback, + onRequestRedirected: onRequestRedirectedCallback }); } catch (err) { - console.log("getAccountsByOwner err: " + JSON.stringify(err)); + console.log("auth err: " + JSON.stringify(err)); } ``` -### getAllAccounts(deprecated) - -getAllAccounts(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void - -获取指定应用全部帐号信息。 +### getAuthToken9+ -> **说明:** 从API version 9开始废弃, 建议使用[getAccountsByOwner]替代。 -> -> 从 API version 7开始支持。 +getAuthToken(name: string, owner: string, authType: string, callback: AsyncCallback<string>): void -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +获取指定应用帐号和鉴权类型的Auth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | --------- | -| owner | string | 是 | 应用包名称。 | -| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取指定应用帐号和鉴权类型的Auth令牌成功时,err为undefined,data返回Auth令牌对象;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner or authType. | + | 12300003 | the account indicated by owner dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - const selfBundle = "com.example.actsgetallaaccounts"; - appAccountManager.getAllAccounts(selfBundle, (err, data)=>{ - console.debug("getAllAccounts err:" + JSON.stringify(err)); - console.debug("getAllAccounts data:" + JSON.stringify(data)); - }); + try { + appAccountManager.getAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { + console.log('getAuthToken err: ' + JSON.stringify(err)); + console.log('getAuthToken token: ' + data); + }); + } catch (err) { + console.log('getAuthToken err: ' + JSON.stringify(err)); + } ``` -### getAllAccounts(deprecated) - -getAllAccounts(owner: string): Promise<Array<AppAccountInfo>> - -获取指定应用全部帐号信息。 +### getAuthToken9+ -> **说明:** 从API version 9开始废弃, 建议使用[getAccountsByOwner](#getaccountsbyowner9-1)替代。 -> -> 从 API version 7开始支持。 +getAuthToken(name: string, owner: string, authType: string): Promise<string> -**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 +获取指定应用帐户和鉴权类型的Auth令牌。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ------ | -| owner | string | 是 | 应用包名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| --------------------- | --------------------- | +| Promise<string> | Promise对象。返回指定应用帐户和鉴权类型的Auth令牌对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner or authType. | + | 12300003 | the account indicated by owner dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - const selfBundle = "com.example.actsgetallaaccounts"; - appAccountManager.getAllAccounts(selfBundle).then((data) => { - console.log('getAllAccounts: ' + data); - }).catch((err) => { - console.log("getAllAccounts err: " + JSON.stringify(err)); - }); + try { + appAccountManager.getAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData").then((data) => { + console.log('getAuthToken token: ' + data); + }).catch((err) => { + console.log("getAuthToken err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("getAuthToken err: " + JSON.stringify(err)); + } ``` -### getCredential9+ +### setAuthToken9+ -getCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void +setAuthToken(name: string, authType: string, token: string, callback: AsyncCallback<void>): void -获取此应用帐号的凭据(如数字密码、人脸和PIN码等),使用callback回调异步返回结果。 +设置指定应用帐号和鉴权类型的Auth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | --------------------------- | ---- | -------------- | -| name | string | 是 | 应用帐号名称。 | -| credentialType | string | 是 | 获取此应用帐号的凭据的类型。 | -| callback | AsyncCallback<string> | 是 | 获取此应用帐号的凭据的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | -------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | Auth令牌。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置指定应用帐号和鉴权类型的Auth令牌成功时,err为undefined;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or token. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | + | 12400007 | the number of token has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getCredential("ZhangSan", "credentialType001", (err, result) => { - console.log("getCredential err: " + JSON.stringify(err)); - console.log('getCredential result: ' + result); + appAccountManager.setAuthToken("LiSi", "getSocialData", "xxxx", (err) => { + console.log('setAuthToken err: ' + JSON.stringify(err)); }); } catch (err) { - console.log("getCredential err: " + JSON.stringify(err)); + console.log('setAuthToken err: ' + JSON.stringify(err)); } ``` -### getCredential9+ +### setAuthToken9+ -getCredential(name: string, credentialType: string): Promise<string> +setAuthToken(name: string, authType: string, token: string): Promise<void> -获取此应用程序帐号的凭据,使用Promise方式异步返回结果。 +设置指定应用帐户和鉴权类型的Auth令牌。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------ | ---- | ---------- | -| name | string | 是 | 应用帐号名称。 | -| credentialType | string | 是 | 要获取的凭据的类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | -------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | Auth令牌。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or token. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | + | 12400007 | the number of token has reached the upper limit. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getCredential("ZhangSan", "credentialType001").then((data) => { - console.log('getCredential, result: ' + data); + appAccountManager.setAuthToken("LiSi", "getSocialData", "xxxx").then(() => { + console.log('setAuthToken successfully'); }).catch((err) => { - console.log("getCredential err: " + JSON.stringify(err)); + console.log('setAuthToken err: ' + JSON.stringify(err)); }); } catch (err) { - console.log("getCredential err: " + JSON.stringify(err)); + console.log('setAuthToken err: ' + JSON.stringify(err)); } ``` -### getAccountCredential(deprecated) - -getAccountCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void +### deleteAuthToken9+ -获取此应用帐号的凭据(如数字密码、人脸和PIN码等),使用callback回调异步返回结果。 +deleteAuthToken(name: string, owner: string, authType: string, token: string, callback: AsyncCallback<void>): void -> **说明:** 从API version 9开始废弃, 建议使用[getCredential](#getcredential9)替代。 -> -> 从 API version 7开始支持。 +删除指定应用帐户和鉴权类型的Auth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | --------------------------- | ---- | -------------- | -| name | string | 是 | 应用帐号名称。 | -| credentialType | string | 是 | 获取此应用帐号的凭据的类型。 | -| callback | AsyncCallback<string> | 是 | 获取此应用帐号的凭据的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | 要删除的Auth令牌。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当删除指定应用帐户和鉴权类型的Auth令牌成功时,err为undefined;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or token. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAccountCredential("ZhangSan", "credentialType001", (err, result) => { - console.log("getAccountCredential err: " + JSON.stringify(err)); - console.log('getAccountCredential result: ' + result); - }); + try { + appAccountManager.deleteAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx", (err) => { + console.log('deleteAuthToken err: ' + JSON.stringify(err)); + }); + } catch (err) { + console.log('deleteAuthToken err: ' + JSON.stringify(err)); + } ``` -### getAccountCredential(deprecated) - -getAccountCredential(name: string, credentialType: string): Promise<string> +### deleteAuthToken9+ -获取此应用程序帐号的凭据,使用Promise方式异步返回结果。 +deleteAuthToken(name: string, owner: string, authType: string, token: string): Promise<void> -> **说明:** 从API version 9开始废弃, 建议使用[getCredential](#getcredential9-1)替代。 -> -> 从 API version 7开始支持。 +删除指定应用帐户和鉴权类型的Auth令牌。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------ | ---- | ---------- | -| name | string | 是 | 应用帐号名称。 | -| credentialType | string | 是 | 要获取的凭据的类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | 要删除的Auth令牌。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner, authType or token. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAccountCredential("ZhangSan", "credentialType001").then((data) => { - console.log('getAccountCredential, result: ' + data); - }).catch((err) => { - console.log("getAccountCredential err: " + JSON.stringify(err)); - }); + try { + appAccountManager.deleteAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx").then(() => { + console.log('deleteAuthToken successfully'); + }).catch((err) => { + console.log("deleteAuthToken err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("deleteAuthToken err: " + JSON.stringify(err)); + } ``` -### getAccountExtraInfo(deprecated) - -getAccountExtraInfo(name: string, callback: AsyncCallback<string>): void +### setAuthTokenVisibility9+ -获取此应用帐号的额外信息(能转换成string类型的其它信息),使用callback回调异步返回结果。 +setAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean, callback: AsyncCallback<void>): void -> **说明:** 从API version 9开始废弃。 -> -> 从 API version 7开始支持。 +设置指定鉴权类型的Auth令牌对特定应用的可见性。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------- | -| name | string | 是 | 应用帐号名称。 | -| callback | AsyncCallback<string> | 是 | 获取此应用帐号的额外信息回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------- | ---- | ------------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 被设置可见性的应用包名。 | +| isVisible | boolean | 是 | 是否可见。当设置成true可见,false不可见。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置指定鉴权类型的Auth令牌对特定应用的可见性成功时,err为undefined;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, authType or bundleName. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAccountExtraInfo("ZhangSan", (err, result) => { - console.log("getAccountExtraInfo err: " + JSON.stringify(err)); - console.log('getAccountExtraInfo result: ' + result); - }); + try { + appAccountManager.setAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true, (err) => { + console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); + }); + } catch (err) { + console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); + } ``` -### getAccountExtraInfo(deprecated) - -getAccountExtraInfo(name: string): Promise<string> +### setAuthTokenVisibility9+ -获取此应用程序帐号的额外信息,使用Promise方式异步返回结果。 +setAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean): Promise<void> -> **说明:** 从API version 9开始废弃。 -> -> 从 API version 7开始支持。 +设置指定鉴权类型的OAuth令牌对特定应用的可见性。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | ------- | -| name | string | 是 | 应用帐号名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------- | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 被设置可见性的应用包名。 | +| isVisible | boolean | 是 | 是否可见。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, authType or bundleName. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAccountExtraInfo("ZhangSan").then((data) => { - console.log('getAccountExtraInfo, result: ' + data); - }).catch((err) => { - console.log("getAccountExtraInfo err: " + JSON.stringify(err)); - }); + try { + appAccountManager.setAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true).then(() => { + console.log('setAuthTokenVisibility successfully'); + }).catch((err) => { + console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); + }); + } catch (err) { + console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); + } ``` -### getCustomData9+ +### checkAuthTokenVisibility9+ -getCustomData(name: string, key: string, callback: AsyncCallback<string>): void +checkAuthTokenVisibility(name: string, authType: string, bundleName: string, callback: AsyncCallback<boolean>): void -获取与此应用程序帐号关联的数据,使用callback回调异步返回结果。 +检查指定鉴权类型的Auth令牌对特定应用的可见性。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要获取的数据的键。 | -| callback | AsyncCallback<string> | 是 | 获取与此应用帐号关联的数据的回调。 | - +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 检查可见性的应用包名。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。当检查指定鉴权类型的Auth令牌对特定应用的可见性时,err为undefined,data为true表示可见,data为false表示不可见;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, authType or bundleName. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | + **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getCustomData("ZhangSan", "k001", (err, result) => { - console.log("getCustomData err: " + JSON.stringify(err)); - console.log('getCustomData result: ' + result); + appAccountManager.checkAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", (err, data) => { + console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); + console.log('checkAuthTokenVisibility isVisible: ' + data); }); } catch (err) { - console.log("getCustomData err: " + JSON.stringify(err)); + console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); } ``` -### getCustomData9+ +### checkAuthTokenVisibility9+ -getCustomData(name: string, key: string): Promise<string> +checkAuthTokenVisibility(name: string, authType: string, bundleName: string): Promise<boolean> -获取与此应用程序帐号关联的数据,使用Promise方式异步返回结果。 +检查指定鉴权类型的Auth令牌对特定应用的可见性。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要获取的数据的键。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | ------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 用于检查可见性的应用包名。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------- | --------------------- | +| Promise<boolean> | Promise对象。返回true表示指定鉴权类型的Auth令牌对特定应用的可见,返回false表示不可见。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, authType or bundleName. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getCustomData("ZhangSan", "k001").then((data) => { - console.log('getCustomData: ' + data); + appAccountManager.checkAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo").then((data) => { + console.log('checkAuthTokenVisibility isVisible: ' + data); }).catch((err) => { - console.log("getCustomData err: " + JSON.stringify(err)); + console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); }); } catch (err) { - console.log("getCustomData err: " + JSON.stringify(err)); + console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); } ``` -### getAssociatedData(deprecated) - -getAssociatedData(name: string, key: string, callback: AsyncCallback<string>): void +### getAllAuthTokens9+ -获取与此应用程序帐号关联的数据,使用callback回调异步返回结果。 +getAllAuthTokens(name: string, owner: string, callback: AsyncCallback<Array<OAuthTokenInfo>>): void -> **说明:** 从API version 9开始废弃, 建议使用[getCustomData](#getcustomdata9)替代。 -> -> 从 API version 7开始支持。 +获取指定应用对调用方全部可见的Auth令牌。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要获取的数据的键。 | -| callback | AsyncCallback<string> | 是 | 获取与此应用帐号关联的数据的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| callback | AsyncCallback<Array< [AuthTokenInfo](#authtokeninfo9)>> | 是 | 回调函数。当获取指定应用对调 +用方全部可见的Auth令牌成功时,err为undefined,data为全部可见的Auth令牌数组;否则为错误对象。 | -**示例:** +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or owner. | + | 12300003 | the account indicated by name dose not exist. | + +**示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAssociatedData("ZhangSan", "k001", (err, result) => { - console.log("getAssociatedData err: " + JSON.stringify(err)); - console.log('getAssociatedData result: ' + result); - }); + try { + appAccountManager.getAllAuthTokens("LiSi", "com.example.ohos.accountjsdemo", (err, data) => { + console.log("getAllAuthTokens err: " + JSON.stringify(err)); + console.log('getAllAuthTokens data: ' + JSON.stringify(data)); + }); + } catch (err) { + console.log("getAllAuthTokens err: " + JSON.stringify(err)); + } ``` -### getAssociatedData(deprecated) - -getAssociatedData(name: string, key: string): Promise<string> +### getAllAuthTokens9+ -获取与此应用程序帐号关联的数据,使用Promise方式异步返回结果。 +getAllAuthTokens(name: string, owner: string): Promise<Array<AuthTokenInfo>> -> **说明:** 从API version 9开始废弃, 建议使用[getCustomData](#getcustomdata9-1)替代。 -> -> 从 API version 7开始支持。 +获取指定应用帐户对调用方可见的全部Auth令牌。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要获取的数据的键。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array< [AuthTokenInfo](#authtokeninfo9)>> | Promise对象。返回指定应用帐户对调用方可见的全部Auth令牌对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or owner. | + | 12300003 | the account indicated by name dose not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAssociatedData("ZhangSan", "k001").then((data) => { - console.log('getAssociatedData: ' + data); - }).catch((err) => { - console.log("getAssociatedData err: " + JSON.stringify(err)); - }); + try { + appAccountManager.getAllAuthTokens("LiSi", "com.example.ohos.accountjsdemo").then((data) => { + console.log('getAllAuthTokens data: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("getAllAuthTokens err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("getAllAuthTokens err: " + JSON.stringify(err)); + } ``` -### getAssociatedDataSync9+ +### getAuthList9+ -getAssociatedDataSync(name: string, key: string): string; +getAuthList(name: string, authType: string, callback: AsyncCallback<Array<string>>): void -获取与此应用程序帐号关联的数据,使用同步方式返回结果。 +获取指定应用帐户和鉴权类型的Auth令牌的授权列表。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---- | ------ | ---- | --------- | -| name | string | 是 | 应用帐号名称。 | -| key | string | 是 | 要获取的数据的键。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ----------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 应用帐号的鉴权类型的Auth令牌的授权列表。 | +| callback | AsyncCallback<Array<string>> | 是 | 回调函数。当获取指定应用帐户和鉴权类型的Auth令牌的授权列表成功时,err为undefined,data为Auth令牌的授权列表;否则为错误对象。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| :-------------------- | :-------------------- | -| string | 目标关联数据的取值。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or authType. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - var backData = appAccountManager.getAssociatedDataSync("ZhangSan", "k001"); - console.info("getAssociatedDataSync backData:" + JSON.stringify(backData)); + appAccountManager.getAuthList("com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { + console.log('getAuthList err: ' + JSON.stringify(err)); + console.log('getAuthList data: ' + JSON.stringify(data)); + }); } catch (err) { - console.error(`getAssociatedDataSync err, code is ${e.code}, message is ${e.message}`); + console.log('getAuthList err: ' + JSON.stringify(err)); } ``` -### on('accountChange')9+ +### getAuthList9+ -on(type: 'accountChange', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void +getAuthList(name: string, authType: string): Promise<Array<string>> -订阅指定帐号所有者的帐户变更事件,使用callback回调异步返回结果。 +获取指定应用帐户和鉴权类型的Auth令牌的授权列表。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------ | -| type | 'accountChange' | 是 | 关于帐号更改事件,当帐号所有者更新帐号时,订阅者将收到通知。 | -| owners | Array<string> | 是 | 指示帐号的所有者。 | -| callback | Callback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 订阅指定帐号所有者的帐号变更事件的回调。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - function changeOnCallback(data){ - console.debug("receive change data:" + JSON.stringify(data)); - } - try{ - appAccountManager.on('accountChange', ["com.example.actsaccounttest"], changeOnCallback); - } - catch(err){ - console.error("on accountOnOffDemo err:" + JSON.stringify(err)); - } - ``` - -### on('change')(deprecated) - -on(type: 'change', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void - -订阅指定帐号所有者的帐户变更事件,使用callback回调异步返回结果。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ----------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 应用帐号的鉴权类型的Auth令牌的授权列表。 | -> **说明:** 从API version 9开始废弃, 建议使用[on('accountChange')](#onaccountchange9)替代。 -> -> 从 API version 7开始支持。 +**返回值:** -**系统能力:** SystemCapability.Account.AppAccount +| 类型 | 说明 | +| ---------------------------------- | --------------------- | +| Promise<Array<string>> | Promise对象。返回指定应用帐户和鉴权类型的Auth令牌的授权列表对象。 | -**参数:** +**错误码:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------ | -| type | 'change' | 是 | 关于帐号更改事件,当帐号所有者更新帐号时,订阅者将收到通知。 | -| owners | Array<string> | 是 | 指示帐号的所有者。 | -| callback | Callback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 订阅指定帐号所有者的帐号变更事件的回调。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or authType. | + | 12300003 | the account indicated by name dose not exist. | + | 12300015 | the authType is not supported on current device. | + | 12300019 | credential does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - function changeOnCallback(data){ - console.debug("receive change data:" + JSON.stringify(data)); - } - try{ - appAccountManager.on('change', ["com.example.actsaccounttest"], changeOnCallback); - } - catch(err){ - console.error("on accountOnOffDemo err:" + JSON.stringify(err)); + try { + appAccountManager.getAuthList("com.example.ohos.accountjsdemo", "getSocialData").then((data) => { + console.log('getAuthList data: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("getAuthList err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("getAuthList err: " + JSON.stringify(err)); } ``` -### off('accountChange')9+ +### getAuthCallback9+ -off(type: 'accountChange', callback?: Callback>): void +getAuthCallback(sessionId: string, callback: AsyncCallback<AuthCallback>): void -取消订阅帐号事件,使用callback回调异步返回结果。 +获取鉴权会话的认证器回调。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------- | ---- | ------------ | -| type | 'accountChange' | 是 | 关于帐号更改事件。 | -| callback | Callback> | 否 | 取消订阅帐号事件的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ---------------------------------------- | ---- | -------- | +| sessionId | string | 是 | 鉴权会话的标识。 | +| callback | AsyncCallback<[AuthCallback](#authcallback9)> | 是 | 回调函数。当获取鉴权会话的认证器回调函数成功时,err为undefined,data为认证器回调函数;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12400005 | the session indicated by sessionId does not exist. | **示例:** ```js + import featureAbility from '@ohos.ability.featureAbility'; const appAccountManager = account_appAccount.createAppAccountManager(); - function changeOnCallback(data){ - console.debug("receive change data:" + JSON.stringify(data)); - appAccountManager.off('accountChange', function(){ - console.debug("off finish"); - }) - } - try{ - appAccountManager.on('accountChange', ["com.example.actsaccounttest"], changeOnCallback); - } - catch(err){ - console.error("on accountOnOffDemo err:" + JSON.stringify(err)); - } + featureAbility.getWant((err, want) => { + var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; + try { + appAccountManager.getAuthCallback(sessionId, (err, callback) => { + if (err.code != account_appAccount.ResultCode.SUCCESS) { + console.log("getAuthCallback err: " + JSON.stringify(err)); + return; + } + var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", + [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", + [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", + [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; + callback.onResult(account_appAccount.ResultCode.SUCCESS, result); + }); + } catch (err) { + console.log("getAuthCallback err: " + JSON.stringify(err)); + } + }); ``` -### off('change')(deprecated) - -off(type: 'change', callback?: Callback>): void +### getAuthCallback9+ -取消订阅帐号事件,使用callback回调异步返回结果。 +getAuthCallback(sessionId: string): Promise<AuthCallback> -> **说明:** 从API version 9开始废弃, 建议使用[off('accountChange')](#offaccountchange9)替代。 -> -> 从 API version 7开始支持。 +获取鉴权会话的认证器回调。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------- | ---- | ------------ | -| type | 'change' | 是 | 关于帐号更改事件。 | -| callback | Callback> | 否 | 取消订阅帐号事件的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | -------- | +| sessionId | string | 是 | 鉴权会话的标识。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------------------------ | --------------------- | +| Promise<[AuthCallback](#authcallback9)> | Promise对象。返回鉴权会话的认证器回调对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12400005 | the session indicated by sessionId does not exist. | **示例:** ```js + import featureAbility from '@ohos.ability.featureAbility'; + const appAccountManager = account_appAccount.createAppAccountManager(); - function changeOnCallback(data){ - console.debug("receive change data:" + JSON.stringify(data)); - appAccountManager.off('change', function(){ - console.debug("off finish"); - }) - } - try{ - appAccountManager.on('change', ["com.example.actsaccounttest"], changeOnCallback); - } - catch(err){ - console.error("on accountOnOffDemo err:" + JSON.stringify(err)); - } + featureAbility.getWant().then((want) => { + var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; + try { + appAccountManager.getAuthCallback(sessionId).then((callback) => { + var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", + [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", + [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", + [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; + callback.onResult(account_appAccount.ResultCode.SUCCESS, result); + }).catch((err) => { + console.log("getAuthCallback err: " + JSON.stringify(err)); + }); + } + }).catch((err) => { + console.log("getWant err: " + JSON.stringify(err)); + }); ``` -### auth9+ +### queryAuthenticatorInfo9+ -auth(name: string, owner: string, authType: string, callback: AuthCallback): void +queryAuthenticatorInfo(owner: string, callback: AsyncCallback<AuthenticatorInfo>): void -对应用帐户进行鉴权以获取Auth令牌,使用callback回调异步返回结果。 +获取指定应用帐号的认证器信息。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | --------------- | -| name | string | 是 | 要鉴权的应用帐号名称。 | -| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| callback | [AuthCallback](#authcallback9) | 是 | 认证器回调,用于返回鉴权结果。 | - -**示例:** +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ----------- | +| owner | string | 是 | 应用帐号的所有者包名。 | +| callback | AsyncCallback<[AuthenticatorInfo](#authenticatorinfo8)> | 是 | 回调函数。当获取指定应用帐号的认证器信息成功时,err为undefined,data为认证器信息对象;否则为错误对象。 | - ```js - import featureAbility from '@ohos.ability.featureAbility'; +**错误码:** - function onResultCallback(code, result) { - console.log("resultCode: " + code); - console.log("result: " + JSON.stringify(result)); - } + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner. | + | 12300003 | the account indicated by owner dose not exist. | - function onRequestRedirectedCallback(request) { - let abilityStartSetting = {want: request}; - featureAbility.startAbility(abilityStartSetting, (err)=>{ - console.log("startAbility err: " + JSON.stringify(err)); - }); - } +**示例:** + ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.auth("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", { - onResult: onResultCallback, - onRequestRedirected: onRequestRedirectedCallback + appAccountManager.queryAuthenticatorInfo("com.example.ohos.accountjsdemo", (err, data) => { + console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); + console.log('queryAuthenticatorInfo data: ' + JSON.stringify(data)); }); } catch (err) { - console.log("auth err: " + JSON.stringify(err)); + console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); } ``` -### auth9+ +### queryAuthenticatorInfo9+ -auth(name: string, owner: string, authType: string, options: {[key: string]: Object}, callback: AuthCallback): void +queryAuthenticatorInfo(owner: string): Promise<AuthenticatorInfo> -对应用帐户进行鉴权以获取OAuth令牌,使用callback回调异步返回结果。 +获取指定应用帐户的认证器信息。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | --------------- | -| name | string | 是 | 要鉴权的应用帐号名称。 | -| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| options | {[key: string]: Object} | 是 | 鉴权所需的可选项。 | -| callback | [AuthCallback](#authcallback9) | 是 | 认证器回调,用于返回鉴权结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------- | +| owner | string | 是 | 应用帐号的所有者包名。 | -**示例:** +**返回值:** - ```js - import featureAbility from '@ohos.ability.featureAbility'; +| 类型 | 说明 | +| -------------------------------- | --------------------- | +| Promise<[AuthenticatorInfo](#authenticatorinfo8)> | Promise对象。返回指定应用帐户的认证器信息对象。 | - function onResultCallback(code, result) { - console.log("resultCode: " + code); - console.log("result: " + JSON.stringify(result)); - } +**错误码:** - function onRequestRedirectedCallback(request) { - let abilityStartSetting = {want: request}; - featureAbility.startAbility(abilityStartSetting, (err)=>{ - console.log("startAbility err: " + JSON.stringify(err)); - }); - } + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner. | + | 12300003 | the account indicated by owner dose not exist. | + +**示例:** + ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.auth("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", {}, { - onResult: onResultCallback, - onRequestRedirected: onRequestRedirectedCallback + appAccountManager.queryAuthenticatorInfo("com.example.ohos.accountjsdemo").then((data) => { + console.log('queryAuthenticatorInfo: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); }); } catch (err) { - console.log("auth err: " + JSON.stringify(err)); + console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); } ``` -### authenticate(deprecated) - -authenticate(name: string, owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void +### checkAccountLabels9+ -对应用帐户进行鉴权以获取OAuth令牌,使用callback回调异步返回结果。 +checkAccountLabels(name: string, owner: string, labels: Array<string>, callback: AsyncCallback<boolean>): void; -> **说明:** 从API version 9开始废弃, 建议使用[auth](#auth9)替代。 -> -> 从 API version 8开始支持。 +检查指定帐户是否具有特定的标签集合。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | --------------- | -| name | string | 是 | 要鉴权的应用帐号名称。 | -| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| options | {[key: string]: any} | 是 | 鉴权所需的可选项。 | -| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 认证器回调,用于返回鉴权结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------------------------- | ----- | --------------- | +| name | string | 是 | 应用帐户的名称。 | +| owner | string | 是 | 应用帐户的所有者。| +| labels | Array<string> | 是 | 标签数组。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。当检查指定帐户是否具有特定的标签集合成功时,err为undefined,data为true表示具有特定标签,data为false表示不具有特定标签;否则为错误对象。 | -**示例:** +**错误码:** - ```js - import featureAbility from '@ohos.ability.featureAbility'; + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or owner. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400001 | the application indicated by name does not exist. | - function onResultCallback(code, result) { - console.log("resultCode: " + code); - console.log("result: " + JSON.stringify(result)); - } +**示例:** - function onRequestRedirectedCallback(request) { - let abilityStartSetting = {want: request}; - featureAbility.startAbility(abilityStartSetting, (err)=>{ - console.log("startAbility err: " + JSON.stringify(err)); + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + var labels = ["student"]; + try { + appAccountManager.checkAccountLabels("zhangsan", "com.example.ohos.accountjsdemo", labels, (err, data) => { + console.log('checkAccountLabels: ' + JSON.stringify(data)); + console.log("checkAccountLabels err: " + JSON.stringify(err)); }); + } catch (err) { + console.log("checkAccountLabels err: " + JSON.stringify(err)); } - - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.authenticate("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", {}, { - onResult: onResultCallback, - onRequestRedirected: onRequestRedirectedCallback - }); ``` -### getAuthToken9+ +### checkAccountLabels9+ -getAuthToken(name: string, owner: string, authType: string, callback: AsyncCallback<string>): void +checkAccountLabels(name: string, owner: string, labels: Array<string>): Promise<boolean> -获取指定应用帐号和鉴权类型的Auth令牌,使用callback回调异步返回结果。 +检查指定帐户是否具有特定的标签集合。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| callback | AsyncCallback<string> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------------------------- | ----- | --------------- | +| name | string | 是 | 应用帐户的名称。 | +| owner | string | 是 | 应用帐户的所有者。| +| labels | Array<string> | 是 | 标签数组。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | -------------------------------- | +| Promise<boolean> | Promise对象。返回true表示指定帐户具有特定的标签集合,返回false表示不具有特性的标签集合。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or owner. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); + var labels = ["student"]; try { - appAccountManager.getAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { - console.log('getAuthToken err: ' + JSON.stringify(err)); - console.log('getAuthToken token: ' + data); + appAccountManager.checkAccountLabels("zhangsan", "com.example.ohos.accountjsdemo", labels).then((data) => { + console.log('checkAccountLabels: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("checkAccountLabels err: " + JSON.stringify(err)); }); } catch (err) { - console.log('getAuthToken err: ' + JSON.stringify(err)); + console.log("checkAccountLabels err: " + JSON.stringify(err)); } ``` -### getAuthToken9+ +### deleteCredential9+ -getAuthToken(name: string, owner: string, authType: string): Promise<string> +deleteCredential(name: string, credentialType: string, callback: AsyncCallback<void>): void -获取指定应用帐户和鉴权类型的Auth令牌,使用Promise方式异步返回结果。 +删除指定应用帐户的指定类型的凭据信息。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------------------------- | ----- | -------------- | +| name | string | 是 | 应用帐户的名称。 | +| credentialType | string | 是 | 凭据类型。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当删除指定应用帐户的指定类型的凭据信息成功时,err为undefined;否则为错误对象。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| --------------------- | --------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300019 | credential does not exist. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.getAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData").then((data) => { - console.log('getAuthToken token: ' + data); - }).catch((err) => { - console.log("getAuthToken err: " + JSON.stringify(err)); + appAccountManager.deleteCredential("zhangsan", "pin", (err, data) => { + console.log('deleteCredential: ' + JSON.stringify(data)); + console.log("deleteCredential err: " + JSON.stringify(err)); }); } catch (err) { - console.log("getAuthToken err: " + JSON.stringify(err)); + console.log("deleteCredential err: " + JSON.stringify(err)); } ``` -### getOAuthToken(deprecated) - -getOAuthToken(name: string, owner: string, authType: string, callback: AsyncCallback<string>): void +### deleteCredential9+ -获取指定应用帐号和鉴权类型的OAuth令牌,使用callback回调异步返回结果。 +deleteCredential(name: string, credentialType: string): Promise<void> -> **说明:** 从API version 9开始废弃, 建议使用[getAuthToken](#getauthtoken9)替代。 -> -> 从 API version 8开始支持。 +删除指定应用帐户的指定类型的凭据信息。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| callback | AsyncCallback<string> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------ | ----- | --------------- | +| name | string | 是 | 应用帐户的名称。 | +| credentialType | string | 是 | 凭据类型。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | -------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name or credentialType. | + | 12300019 | credential does not exist. | + | 12400001 | the application indicated by name does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { - console.log('getOAuthToken err: ' + JSON.stringify(err)); - console.log('getOAuthToken token: ' + data); - }); + try { + appAccountManager.deleteCredential("zhangsan", "pin").then((data) => { + console.log('deleteCredential: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("deleteCredential err: " + JSON.stringify(err)); + }); + } catch (err) { + console.log("deleteCredential err: " + JSON.stringify(err)); + } ``` -### getOAuthToken(deprecated) - -getOAuthToken(name: string, owner: string, authType: string): Promise<string> +### selectAccountsByOptions9+ -获取指定应用帐户和鉴权类型的OAuth令牌,使用Promise方式异步返回结果。 +selectAccountsByOptions(options: SelectAccountsOptions, callback: AsyncCallback<Array<AppAccountInfo>>); -> **说明:** 从API version 9开始废弃, 建议使用[getAuthToken](#getauthtoken9-1)替代。 -> -> 从 API version 8开始支持。 +根据选项选择请求方可访问的帐号列表。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ----------------------------------- | ----- | --------------- | +| options | SelectAccountsOptions | 是 | 选择帐户的选项。 | +| callback | AsyncCallback<[AppAccountInfo](#appaccountinfo)> | 是 | 回调函数。当根据选项选择请求方可访问的帐号列表时,err为undefined,data为可访问的帐号信息对象;否则为错误对象。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| --------------------- | --------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果。 | - -**示例:** - - ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData").then((data) => { - console.log('getOAuthToken token: ' + data); - }).catch((err) => { - console.log("getOAuthToken err: " + JSON.stringify(err)); - }); - ``` - -### setAuthToken9+ - -setAuthToken(name: string, authType: string, token: string, callback: AsyncCallback<void>): void - -设置指定应用帐号和鉴权类型的Auth令牌,使用callback回调异步返回结果。 - -**系统能力:** SystemCapability.Account.AppAccount - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | Auth令牌。 | -| callback | AsyncCallback<void> | 是 | 设置结果的回调。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid options. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); + var options = { + allowedOwners: ["com.example.ohos.accountjsdemo"] + }; try { - appAccountManager.setAuthToken("LiSi", "getSocialData", "xxxx", (err) => { - console.log('setAuthToken err: ' + JSON.stringify(err)); + appAccountManager.selectAccountsByOptions(options, (err, data) => { + console.log('selectAccountsByOptions: ' + JSON.stringify(data)); + console.log("selectAccountsByOptions err: " + JSON.stringify(err)); }); } catch (err) { - console.log('setAuthToken err: ' + JSON.stringify(err)); + console.log("selectAccountsByOptions err: " + JSON.stringify(err)); } ``` -### setAuthToken9+ +### selectAccountsByOptions9+ -setAuthToken(name: string, authType: string, token: string): Promise<void> +selectAccountsByOptions(options: SelectAccountsOptions): Promise<Array<AppAccountInfo>> -设置指定应用帐户和鉴权类型的Auth令牌,使用Promise方式异步返回结果。 +根据选项选择请求方可访问的帐户列表。使用Promise异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | -------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | Auth令牌。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------------------------- | ----- | --------------- | +| options | [SelectAccountsOptions](#selectaccountsoptions9) | 是 | 选择帐户的选项。 | **返回值:** -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ------------------- | -------------------------------- | +| Promise<[AppAccountInfo](#appaccountinfo)> | Promise对象。返回请求方可访问的帐户对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid options. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); + var options = { + allowedOwners: ["com.example.ohos.accountjsdemo"] + }; try { - appAccountManager.setAuthToken("LiSi", "getSocialData", "xxxx").then(() => { - console.log('setAuthToken successfully'); + appAccountManager.selectAccountsByOptions(options).then((data) => { + console.log('selectAccountsByOptions: ' + JSON.stringify(data)); }).catch((err) => { - console.log('setAuthToken err: ' + JSON.stringify(err)); + console.log("selectAccountsByOptions err: " + JSON.stringify(err)); }); } catch (err) { - console.log('setAuthToken err: ' + JSON.stringify(err)); + console.log("selectAccountsByOptions err: " + JSON.stringify(err)); } ``` -### setOAuthToken(deprecated) - -setOAuthToken(name: string, authType: string, token: string, callback: AsyncCallback<void>): void +### verifyCredential9+ -设置指定应用帐号和鉴权类型的OAuth令牌,使用callback回调异步返回结果。 +verifyCredential(name: string, owner: string, callback: AuthenticatorCallback): void; -> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9)替代。 -> -> 从 API version 8开始支持。 +验证用户凭据。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | OAuth令牌。 | -| callback | AsyncCallback<void> | 是 | 设置结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ----- | ----------------------- | +| name | string | 是 | 应用帐户的名称。 | +| owner | string | 是 | 应用帐户的所有者。 | +| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 回调函数。返回认证结果回调函数。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400001 | the application indicated by name does not exist. | + | 12400002 | the account authenticator service does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setOAuthToken("LiSi", "getSocialData", "xxxx", (err) => { - console.log('setOAuthToken err: ' + JSON.stringify(err)); - }); + try { + appAccountManager.verifyCredential("zhangsan", "com.example.ohos.accountjsdemo", { + onResult: (resultCode, result) => { + console.log("verifyCredential onResult, resultCode:" + JSON.stringify(resultCode)); + console.log("verifyCredential onResult, result:" + JSON.stringify(result)); + }, + onRequestRedirected: (request) => { + console.log("verifyCredential onRequestRedirected, request:" + JSON.stringify(request)); + } + }); + } catch (err) { + console.log("verifyCredential err: " + JSON.stringify(err)); + } ``` -### setOAuthToken(deprecated) - -setOAuthToken(name: string, authType: string, token: string): Promise<void> +### verifyCredential9+ -设置指定应用帐户和鉴权类型的OAuth令牌,使用Promise方式异步返回结果。 +verifyCredential(name: string, owner: string, options: VerifyCredentialOptions, callback: AuthenticatorCallback): void; -> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9-1)替代。 -> -> 从 API version 8开始支持。 +验证用户凭据。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | -------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | OAuth令牌。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ----- | ----------------------- | +| name | string | 是 | 应用帐户的名称。 | +| owner | string | 是 | 应用帐户的所有者。 | +| options | [VerifyCredentialOptions](#verifycredentialoptions9) | 是 | 验证凭据的选项。 | +| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 回调函数。返回认证结果回调函数。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid name, owner or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400001 | the application indicated by name does not exist. | + | 12400002 | the account authenticator service does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setOAuthToken("LiSi", "getSocialData", "xxxx").then(() => { - console.log('setOAuthToken successfully'); - }).catch((err) => { - console.log('setOAuthToken err: ' + JSON.stringify(err)); - }); + var options = { + credentialType: "pin", + credential: "123456" + }; + try { + appAccountManager.verifyCredential("zhangsan", "com.example.ohos.accountjsdemo", options, { + onResult: (resultCode, result) => { + console.log("verifyCredential onResult, resultCode:" + JSON.stringify(resultCode)); + console.log("verifyCredential onResult, result:" + JSON.stringify(result)); + }, + onRequestRedirected: (request) => { + console.log("verifyCredential onRequestRedirected, request:" + JSON.stringify(request)); + } + }); + } catch (err) { + console.log("verifyCredential err: " + JSON.stringify(err)); + } ``` -### deleteAuthToken9+ +### setAuthenticatorProperties9+ -deleteAuthToken(name: string, owner: string, authType: string, token: string, callback: AsyncCallback<void>): void +setAuthenticatorProperties(owner: string, callback: AuthCallback): void; -删除指定应用帐户和鉴权类型的Auth令牌,使用callback回调异步返回结果。 +设置认证器属性。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | 要删除的Auth令牌。 | -| callback | AsyncCallback<void> | 是 | 删除结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ----- | ----------------------- | +| owner | string | 是 | 认证器的所有者。 | +| callback | [AuthCallback](#authcallback9) | 是 | 回调函数。返回设置属性结果回调函数。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400002 | the account authenticator service does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); try { - appAccountManager.deleteAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx", (err) => { - console.log('deleteAuthToken err: ' + JSON.stringify(err)); + appAccountManager.setAuthenticatorProperties("com.example.ohos.accountjsdemo", { + onResult: (resultCode, result) => { + console.log("setAuthenticatorProperties onResult, resultCode:" + JSON.stringify(resultCode)); + console.log("setAuthenticatorProperties onResult, result:" + JSON.stringify(result)); + }, + onRequestRedirected: (request) => { + console.log("setAuthenticatorProperties onRequestRedirected, request:" + JSON.stringify(request)); + } }); } catch (err) { - console.log('deleteAuthToken err: ' + JSON.stringify(err)); + console.log("setAuthenticatorProperties err: " + JSON.stringify(err)); } ``` -### deleteAuthToken9+ +### setAuthenticatorProperties9+ -deleteAuthToken(name: string, owner: string, authType: string, token: string): Promise<void> +setAuthenticatorProperties(owner: string, options: SetPropertiesOptions, callback: AuthCallback): void; -删除指定应用帐户和鉴权类型的Auth令牌,使用Promise方式异步返回结果。 +设置认证器属性。使用callback异步回调。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | 要删除的Auth令牌。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ----- | ----------------------- | +| owner | string | 是 | 认证器的所有者。 | +| options | [SetPropertiesOptions](#setpropertiesoptions9) | 是 | 设置属性的选项。 | +| callback | [AuthCallback](#authcallback9) | 是 | 认证器回调,返回设置属性结果回调函数。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | + | 错误码ID | 错误信息| + | ------- | -------| + | 12300001 | system service exception. | + | 12300002 | invalid owner or options. | + | 12300003 | the account indicated by owner dose not exist. | + | 12400002 | the account authenticator service does not exist. | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); + var options = { + properties: {"prop1": "value1"} + }; try { - appAccountManager.deleteAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx").then(() => { - console.log('deleteAuthToken successfully'); - }).catch((err) => { - console.log("deleteAuthToken err: " + JSON.stringify(err)); - }); + appAccountManager.setAuthenticatorProperties("com.example.ohos.accountjsdemo", options, { + onResult: (resultCode, result) => { + console.log("setAuthenticatorProperties onResult, resultCode:" + JSON.stringify(resultCode)); + console.log("setAuthenticatorProperties onResult, result:" + JSON.stringify(result)); + }, + onRequestRedirected: (request) => { + console.log("setAuthenticatorProperties onRequestRedirected, request:" + JSON.stringify(request)); + } + }); } catch (err) { - console.log("deleteAuthToken err: " + JSON.stringify(err)); - } + console.log("setAuthenticatorProperties err: " + JSON.stringify(err)); + } + ``` -### deleteOAuthToken(deprecated) +### addAccount(deprecated) -deleteOAuthToken(name: string, owner: string, authType: string, token: string, callback: AsyncCallback<void>): void +addAccount(name: string, callback: AsyncCallback<void>): void -删除指定应用帐户和鉴权类型的OAuth令牌,使用callback回调异步返回结果。 +将此应用的帐号名添加到帐号管理服务中。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[deleteAuthToken](#deleteauthtoken9)替代。 +> **说明:** +> 从API version 9开始废弃, 建议使用[createAccount](#createaccount9)替代 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | 要删除的OAuth令牌。 | -| callback | AsyncCallback<void> | 是 | 删除结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | -------------------- | +| name | string | 是 | 要添加的应用帐号名称。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当此应用的帐号名添加到帐号管理服务成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.deleteOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx", (err) => { - console.log('deleteOAuthToken err: ' + JSON.stringify(err)); + appAccountManager.addAccount("WangWu", (err) => { + console.log("addAccount err: " + JSON.stringify(err)); }); ``` -### deleteOAuthToken(deprecated) +### addAccount(deprecated) -deleteOAuthToken(name: string, owner: string, authType: string, token: string): Promise<void> +addAccount(name: string, extraInfo: string, callback: AsyncCallback<void>): void -删除指定应用帐户和鉴权类型的OAuth令牌,使用Promise方式异步返回结果。 +将此应用程序的帐号名和额外信息(能转换string类型的其它信息,如token)添加到帐号管理服务中。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9-1)替代。 -> -> 从 API version 8开始支持。 +> **说明:** > 从API version 9开始废弃, 建议使用[createAccount](#createaccount9-1)替代 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| authType | string | 是 | 鉴权类型。 | -| token | string | 是 | 要删除的OAuth令牌。 | - -**返回值:** - -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------------- | ---- | ---------------------------------------- | +| name | string | 是 | 要添加的应用帐号名称。 | +| extraInfo | string | 是 | 要添加的应用帐号的额外信息(能转换string类型的其它信息,如token等),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当此应用程序的帐号名和额外信息添加到帐号管理服务成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.deleteOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx").then(() => { - console.log('deleteOAuthToken successfully'); - }).catch((err) => { - console.log("deleteOAuthToken err: " + JSON.stringify(err)); + appAccountManager.addAccount("LiSi", "token101", (err) => { + console.log("addAccount err: " + JSON.stringify(err)); }); ``` -### setAuthTokenVisibility9+ +### addAccount(deprecated) -setAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean, callback: AsyncCallback<void>): void +addAccount(name: string, extraInfo?: string): Promise<void> + +将此应用的帐号名或额外信息(能转换成string类型的其它信息)添加到帐号管理服务中。使用Promise异步回调。 -设置指定鉴权类型的Auth令牌对特定应用的可见性,使用callback回调异步返回结果。 +> **说明:** > 从API version 9开始废弃, 建议使用[createAccount](#createaccount9-2)替代 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------- | ---- | ------------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 被设置可见性的应用包名。 | -| isVisible | boolean | 是 | 是否可见。当设置成true可见,false不可见。 | -| callback | AsyncCallback<void> | 是 | 设置结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | ---------------------------------------- | +| name | string | 是 | 要添加的应用帐号名称。 | +| extraInfo | string | 否 | 要添加的应用帐号的额外信息(能转换成string类型的其它信息),额外信息不能是应用帐号的敏感信息(如应用账号密码)。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.setAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true, (err) => { - console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); - }); - } catch (err) { - console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); - } + appAccountManager.addAccount("LiSi", "token101").then(()=> { + console.log('addAccount Success'); + }).catch((err) => { + console.log("addAccount err: " + JSON.stringify(err)); + }); ``` -### setAuthTokenVisibility9+ +### addAccountImplicitly(deprecated) -setAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean): Promise<void> +addAccountImplicitly(owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void + +根据指定的帐号所有者、鉴权类型和可选项隐式地添加应用帐号,并使用callback回调异步返回结果。 -设置指定鉴权类型的OAuth令牌对特定应用的可见性,使用Promise方式异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[createAccountImplicitly](#createaccountimplicitly9)替代。 +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------- | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 被设置可见性的应用包名。 | -| isVisible | boolean | 是 | 是否可见。 | - -**返回值:** - -| 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | ----------------------- | +| owner | string | 是 | 要添加的应用帐号所有者包名。 | +| authType | string | 是 | 要添加的应用帐号鉴权类型。鉴权类型为自定义。 | +| options | {[key: string]: any} | 是 | 鉴权所需要的可选项。可选项可根据自己需要设置。 | +| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 认证器回调,用于返回鉴权结果。 | **示例:** ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.setAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true).then(() => { - console.log('setAuthTokenVisibility successfully'); - }).catch((err) => { - console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); + import featureAbility from '@ohos.ability.featureAbility'; + + function onResultCallback(code, result) { + console.log("resultCode: " + code); + console.log("result: " + JSON.stringify(result)); + } + + function onRequestRedirectedCallback(request) { + let abilityStartSetting = {want: request}; + featureAbility.startAbility(abilityStartSetting, (err)=>{ + console.log("startAbility err: " + JSON.stringify(err)); }); - } catch (err) { - console.log('setAuthTokenVisibility err: ' + JSON.stringify(err)); } + + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.addAccountImplicitly("com.example.ohos.accountjsdemo", "getSocialData", {}, { + onResult: onResultCallback, + onRequestRedirected: onRequestRedirectedCallback + }); ``` -### setOAuthTokenVisibility(deprecated) +### deleteAccount(deprecated) -setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean, callback: AsyncCallback<void>): void +deleteAccount(name: string, callback: AsyncCallback<void>): void -设置指定鉴权类型的Auth令牌对特定应用的可见性,使用callback回调异步返回结果。 +从帐号管理服务中删除应用帐号。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[setAuthTokenVisibility](#setauthtokenvisibility9)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[removeAccount](#removeaccount9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------- | ---- | ------------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 被设置可见性的应用包名。 | -| isVisible | boolean | 是 | 是否可见。当设置成true可见,false不可见。 | -| callback | AsyncCallback<void> | 是 | 设置结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ---------------- | +| name | string | 是 | 要删除的应用帐号名称。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当帐号管理服务中删除应用帐号成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true, (err) => { - console.log('setOAuthTokenVisibility err: ' + JSON.stringify(err)); - }); + appAccountManager.deleteAccount("ZhaoLiu", (err) => { + console.log("deleteAccount err: " + JSON.stringify(err)); + }); ``` -### setOAuthTokenVisibility(deprecated) +### deleteAccount(deprecated) -setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean): Promise<void> +deleteAccount(name: string): Promise<void> -设置指定鉴权类型的OAuth令牌对特定应用的可见性,使用Promise方式异步返回结果。 +从帐号管理服务中删除应用帐号。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[setAuthTokenVisibility](#setauthtokenvisibility9-1)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[removeAccount](#removeaccount9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------- | ---- | ------------ | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 被设置可见性的应用包名。 | -| isVisible | boolean | 是 | 是否可见。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | ----------- | +| name | string | 是 | 要删除的应用帐号名称。 | **返回值:** | 类型 | 说明 | -| ------------------- | --------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.setOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true).then(() => { - console.log('setOAuthTokenVisibility successfully'); - }).catch((err) => { - console.log('setOAuthTokenVisibility err: ' + JSON.stringify(err)); + appAccountManager.deleteAccount("ZhaoLiu").then(() => { + console.log('deleteAccount Success'); + }).catch((err) => { + console.log("deleteAccount err: " + JSON.stringify(err)); }); ``` +### disableAppAccess(deprecated) -### checkAuthTokenVisibility9+ +disableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void -checkAuthTokenVisibility(name: string, authType: string, bundleName: string, callback: AsyncCallback<boolean>): void +禁止指定第三方应用帐号名称对指定的第三方应用进行访问。使用callback异步回调。 -检查指定鉴权类型的Auth令牌对特定应用的可见性,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 检查可见性的应用包名。 | -| callback | AsyncCallback<boolean> | 是 | 检查结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------- | ---- | --------------------------------- | +| name | string | 是 | 要禁用访问的第三方应用帐号名称。 | +| bundleName | string | 是 | 第三方应用的包名。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当禁止指定第三方应用帐号名称对指定包名称的第三方应用进行访问设置成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.checkAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", (err, data) => { - console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); - console.log('checkAuthTokenVisibility isVisible: ' + data); - }); - } catch (err) { - console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); - } + appAccountManager.disableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { + console.log("disableAppAccess err: " + JSON.stringify(err)); + }); ``` -### checkAuthTokenVisibility9+ +### disableAppAccess(deprecated) -checkAuthTokenVisibility(name: string, authType: string, bundleName: string): Promise<boolean> +disableAppAccess(name: string, bundleName: string): Promise<void> + +禁止指定第三方应用帐号名称对指定包名称的第三方应用进行访问。使用Promise异步回调。 -检查指定鉴权类型的Auth令牌对特定应用的可见性,使用Promise方式异步返回结果。 +> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9-1)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | ------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 用于检查可见性的应用包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | ---------------- | +| name | string | 是 | 要禁用访问的第三方应用帐号名称。 | +| bundleName | string | 是 | 第三方应用的包名。 | **返回值:** -| 类型 | 说明 | -| ---------------------- | --------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.checkAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo").then((data) => { - console.log('checkAuthTokenVisibility isVisible: ' + data); - }).catch((err) => { - console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); - }); - } catch (err) { - console.log('checkAuthTokenVisibility err: ' + JSON.stringify(err)); - } + appAccountManager.disableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo").then(() => { + console.log('disableAppAccess Success'); + }).catch((err) => { + console.log("disableAppAccess err: " + JSON.stringify(err)); + }); ``` -### checkOAuthTokenVisibility(deprecated) +### enableAppAccess(deprecated) -checkOAuthTokenVisibility(name: string, authType: string, bundleName: string, callback: AsyncCallback<boolean>): void +enableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void -检查指定鉴权类型的OAuth令牌对特定应用的可见性,使用callback回调异步返回结果。 +允许指定第三方应用帐号名称对指定包名称的第三方应用进行访问。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[checkAuthTokenVisibility](#checkauthtokenvisibility9)替代。 +> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 检查可见性的应用包名。 | -| callback | AsyncCallback<boolean> | 是 | 检查结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------- | ---- | --------------------------------- | +| name | string | 是 | 应用帐号名称。 | +| bundleName | string | 是 | 第三方应用的包名。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当允许指定第三方应用帐号名称对指定包名称的第三方应用进行访问设置成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.checkOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", (err, data) => { - console.log('checkOAuthTokenVisibility err: ' + JSON.stringify(err)); - console.log('checkOAuthTokenVisibility isVisible: ' + data); - }); + appAccountManager.enableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo", (err) => { + console.log("enableAppAccess: " + JSON.stringify(err)); + }); ``` +### enableAppAccess(deprecated) -### checkOAuthTokenVisibility(deprecated) - -checkOAuthTokenVisibility(name: string, authType: string, bundleName: string): Promise<boolean> +enableAppAccess(name: string, bundleName: string): Promise<void> -检查指定鉴权类型的OAuth令牌对特定应用的可见性,使用Promise方式异步返回结果。 +允许指定第三方应用帐号的名称对指定包名称的第三方应用进行访问。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[checkAuthTokenVisibility](#checkauthtokenvisibility9-1)替代。 +> **说明:** 从API version 9开始废弃。建议使用[setAppAccess](#setappaccess9-1)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | ------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 鉴权类型。 | -| bundleName | string | 是 | 用于检查可见性的应用包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| bundleName | string | 是 | 第三方应用的包名。 | **返回值:** -| 类型 | 说明 | -| ---------------------- | --------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.checkOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo").then((data) => { - console.log('checkOAuthTokenVisibility isVisible: ' + data); + appAccountManager.enableAppAccess("ZhangSan", "com.example.ohos.accountjsdemo").then(() => { + console.log('enableAppAccess Success'); }).catch((err) => { - console.log('checkOAuthTokenVisibility err: ' + JSON.stringify(err)); + console.log("enableAppAccess err: " + JSON.stringify(err)); }); ``` -### getAllAuthTokens9+ +### checkAppAccountSyncEnable(deprecated) -getAllAuthTokens(name: string, owner: string, callback: AsyncCallback<Array<OAuthTokenInfo>>): void +checkAppAccountSyncEnable(name: string, callback: AsyncCallback<boolean>): void + +检查指定应用帐号是否允许应用数据同步。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃。建议使用[checkDataSyncEnabled](#checkdatasyncenabled9)替代。 +> +> 从 API version 7开始支持。 -获取指定应用对调用方全部可见的Auth令牌,使用callback回调异步返回结果。 +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| callback | AsyncCallback<Array< [AuthTokenInfo](#authtokeninfo9)>> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | --------------------- | +| name | string | 是 | 应用帐号名称。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。当检查指定应用帐号是否允许应用数据同步成功,err为undefined,data返回true表示指定应用帐号允许应用数据同步,data返回false表示指定应用帐号不允许应用数据同步;否则为错误对象。 | -**示例:** +**示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.getAllAuthTokens("LiSi", "com.example.ohos.accountjsdemo", (err, data) => { - console.log("getAllAuthTokens err: " + JSON.stringify(err)); - console.log('getAllAuthTokens data: ' + JSON.stringify(data)); - }); - } catch (err) { - console.log("getAllAuthTokens err: " + JSON.stringify(err)); - } + appAccountManager.checkAppAccountSyncEnable("ZhangSan", (err, result) => { + console.log("checkAppAccountSyncEnable err: " + JSON.stringify(err)); + console.log('checkAppAccountSyncEnable result: ' + result); + }); ``` -### getAllAuthTokens9+ +### checkAppAccountSyncEnable(deprecated) -getAllAuthTokens(name: string, owner: string): Promise<Array<AuthTokenInfo>> +checkAppAccountSyncEnable(name: string): Promise<boolean> + +检查指定应用帐号是否允许应用数据同步。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃。建议使用[checkDataSyncEnabled](#checkdatasyncenabled9-1)替代。 +> +> 从 API version 7开始支持。 -获取指定应用帐户对调用方可见的全部Auth令牌,使用Promise方式异步返回结果。 +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | ------- | +| name | string | 是 | 应用帐号名称。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array< [AuthTokenInfo](#authtokeninfo9)>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :--------------------- | :-------------------- | +| Promise<boolean> | Promise对象。返回true表示允许应用数据同步;返回false表示不允许应用数据同步。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.getAllAuthTokens("LiSi", "com.example.ohos.accountjsdemo").then((data) => { - console.log('getAllAuthTokens data: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("getAllAuthTokens err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("getAllAuthTokens err: " + JSON.stringify(err)); - } + appAccountManager.checkAppAccountSyncEnable("ZhangSan").then((data) => { + console.log('checkAppAccountSyncEnable, result: ' + data); + }).catch((err) => { + console.log("checkAppAccountSyncEnable err: " + JSON.stringify(err)); + }); ``` -### getAllOAuthTokens(deprecated) +### setAccountCredential(deprecated) -getAllOAuthTokens(name: string, owner: string, callback: AsyncCallback<Array<OAuthTokenInfo>>): void +setAccountCredential(name: string, credentialType: string, credential: string,callback: AsyncCallback<void>): void -获取指定应用对调用方全部可见的OAuth令牌,使用callback回调异步返回结果。 +设置此应用程序帐号的凭据。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[getAllAuthTokens](#getallauthtokens9)替代。 +> **说明:** 从API version 9开始废弃,建议使用[setCredential](#setcredential9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | -| callback | AsyncCallback<Array< [OAuthTokenInfo](#oauthtokeninfodeprecated)>> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------------------------- | ---- | ------------- | +| name | string | 是 | 应用程序帐号名称。 | +| credentialType | string | 是 | 要设置的凭据类型。 | +| credential | string | 是 | 要设置的凭据。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置此应用程序帐号的凭据成功时,err为undefined,否则为错误对象。 | -**示例:** +**示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAllOAuthTokens("LiSi", "com.example.ohos.accountjsdemo", (err, data) => { - console.log("getAllOAuthTokens err: " + JSON.stringify(err)); - console.log('getAllOAuthTokens data: ' + JSON.stringify(data)); + appAccountManager.setAccountCredential("ZhangSan", "credentialType001", "credential001", (err) => { + console.log("setAccountCredential err: " + JSON.stringify(err)); }); ``` -### getAllOAuthTokens(deprecated) +### setAccountCredential(deprecated) -getAllOAuthTokens(name: string, owner: string): Promise<Array<OAuthTokenInfo>> +setAccountCredential(name: string, credentialType: string, credential: string): Promise<void> -获取指定应用帐户对调用方可见的全部OAuth令牌,使用Promise方式异步返回结果。 +设置此应用程序帐号的凭据。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[getAllAuthTokens](#getallauthtokens9-1)替代。 +> **说明:** 从API version 9开始废弃,建议使用[setCredential](#setcredential9-1)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------- | -| name | string | 是 | 应用帐号的名称。 | -| owner | string | 是 | 应用帐号的所有者包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------ | ---- | ---------- | +| name | string | 是 | 应用帐号的名称。 | +| credentialType | string | 是 | 要设置的凭据的类型。 | +| credential | string | 是 | 要设置的凭据。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------------- | --------------------- | -| Promise<Array< [OAuthTokenInfo](#oauthtokeninfodeprecated)>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAllOAuthTokens("LiSi", "com.example.ohos.accountjsdemo").then((data) => { - console.log('getAllOAuthTokens data: ' + JSON.stringify(data)); + appAccountManager.setAccountCredential("ZhangSan", "credentialType001", "credential001").then(() => { + console.log('setAccountCredential Success'); }).catch((err) => { - console.log("getAllOAuthTokens err: " + JSON.stringify(err)); + console.log("setAccountCredential err: " + JSON.stringify(err)); }); ``` -### getAuthList9+ +### setAccountExtraInfo(deprecated) -getAuthList(name: string, authType: string, callback: AsyncCallback<Array<string>>): void +setAccountExtraInfo(name: string, extraInfo: string, callback: AsyncCallback<void>): void + +设置此应用程序帐号的额外信息。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃。 +> +> 从 API version 7开始支持。 -获取指定应用帐户和鉴权类型的Auth令牌的授权列表,使用callback回调异步返回结果。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ----------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 应用帐号的鉴权类型的Auth令牌的授权列表。 | -| callback | AsyncCallback<Array<string>> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------------- | ---- | --------------- | +| name | string | 是 | 应用帐号名称。 | +| extraInfo | string | 是 | 要设置的额外信息。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置此应用程序帐号的额外信息成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.getAuthList("com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { - console.log('getAuthList err: ' + JSON.stringify(err)); - console.log('getAuthList data: ' + JSON.stringify(data)); - }); - } catch (err) { - console.log('getAuthList err: ' + JSON.stringify(err)); - } + appAccountManager.setAccountExtraInfo("ZhangSan", "Tk002", (err) => { + console.log("setAccountExtraInfo err: " + JSON.stringify(err)); + }); ``` -### getAuthList9+ +### setAccountExtraInfo(deprecated) -getAuthList(name: string, authType: string): Promise<Array<string>> +setAccountExtraInfo(name: string, extraInfo: string): Promise<void> + +设置此应用程序帐号的额外信息。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃。 +> +> 从 API version 7开始支持。 -获取指定应用帐户和鉴权类型的Auth令牌的授权列表,使用Promise方式异步返回结果。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 应用帐号的鉴权类型的Auth令牌的授权列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| extraInfo | string | 是 | 要设置的额外信息。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------- | --------------------- | -| Promise<Array<string>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.getAuthList("com.example.ohos.accountjsdemo", "getSocialData").then((data) => { - console.log('getAuthList data: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("getAuthList err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("getAuthList err: " + JSON.stringify(err)); - } + appAccountManager.setAccountExtraInfo("ZhangSan", "Tk002").then(() => { + console.log('setAccountExtraInfo Success'); + }).catch((err) => { + console.log("setAccountExtraInfo err: " + JSON.stringify(err)); + }); ``` -### getOAuthList(deprecated) +### setAppAccountSyncEnable(deprecated) -getOAuthList(name: string, authType: string, callback: AsyncCallback<Array<string>>): void +setAppAccountSyncEnable(name: string, isEnable: boolean, callback: AsyncCallback<void>): void -获取指定应用帐户和鉴权类型的OAuth令牌的授权列表,使用callback回调异步返回结果。 +设置指定的应用程序帐号是否允许应用程序数据同步。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[getAuthList](#getauthlist9)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[setDataSyncEnabled](#setdatasyncenabled9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ----------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 应用帐号的鉴权类型的OAuth令牌的授权列表。 | -| callback | AsyncCallback<Array<string>> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------------------- | +| name | string | 是 | 应用帐号名称。 | +| isEnable | boolean | 是 | 是否允许应用数据同步。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置指定的应用帐号是否允许应用程序数据同步成功时,err为undefined,否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getOAuthList("com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { - console.log('getOAuthList err: ' + JSON.stringify(err)); - console.log('getOAuthList data: ' + JSON.stringify(data)); + appAccountManager.setAppAccountSyncEnable("ZhangSan", true, (err) => { + console.log("setAppAccountSyncEnable err: " + JSON.stringify(err)); }); ``` -### getOAuthList(deprecated) +### setAppAccountSyncEnable(deprecated) -getOAuthList(name: string, authType: string): Promise<Array<string>> +setAppAccountSyncEnable(name: string, isEnable: boolean): Promise<void> -获取指定应用帐户和鉴权类型的OAuth令牌的授权列表,使用Promise方式异步返回结果。 +设置指定的应用程序帐号是否允许应用程序数据同步。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[getAuthList](#getauthlist9-1)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[setDataSyncEnabled](#setdatasyncenabled9-1)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------ | ---- | ----------------------- | -| name | string | 是 | 应用帐号的名称。 | -| authType | string | 是 | 应用帐号的鉴权类型的OAuth令牌的授权列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------- | ---- | ----------- | +| name | string | 是 | 应用帐号名称。 | +| isEnable | boolean | 是 | 是否允许应用数据同步。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------- | --------------------- | -| Promise<Array<string>> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getOAuthList("com.example.ohos.accountjsdemo", "getSocialData").then((data) => { - console.log('getOAuthList data: ' + JSON.stringify(data)); + appAccountManager .setAppAccountSyncEnable("ZhangSan", true).then(() => { + console.log('setAppAccountSyncEnable Success'); }).catch((err) => { - console.log("getOAuthList err: " + JSON.stringify(err)); + console.log("setAppAccountSyncEnable err: " + JSON.stringify(err)); }); ``` -### getAuthCallback9+ +### setAssociatedData(deprecated) -getAuthCallback(sessionId: string, callback: AsyncCallback<AuthCallback>): void +setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void + +设置与此应用程序帐号关联的数据。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setCustomData](#setcustomdata9)替代。 +> +> 从 API version 7开始支持。 -获取鉴权会话的认证器回调,使用callback回调异步返回结果。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ---------------------------------------- | ---- | -------- | -| sessionId | string | 是 | 鉴权会话的标识。 | -| callback | AsyncCallback<[AuthCallback](#authcallback9)> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | +| value | string | 是 | 要设置的数据的值。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置与此应用帐号关联的数据成功时,err为undefined,否则为错误对象。 | **示例:** ```js - import featureAbility from '@ohos.ability.featureAbility'; const appAccountManager = account_appAccount.createAppAccountManager(); - featureAbility.getWant((err, want) => { - var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; - try { - appAccountManager.getAuthCallback(sessionId, (err, callback) => { - if (err.code != account_appAccount.ResultCode.SUCCESS) { - console.log("getAuthCallback err: " + JSON.stringify(err)); - return; - } - var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", - [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", - [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", - [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; - callback.onResult(account_appAccount.ResultCode.SUCCESS, result); - }); - } catch (err) { - console.log("getAuthCallback err: " + JSON.stringify(err)); - } + appAccountManager.setAssociatedData("ZhangSan", "k001", "v001", (err) => { + console.log("setAssociatedData err: " + JSON.stringify(err)); }); ``` -### getAuthCallback9+ +### setAssociatedData(deprecated) -getAuthCallback(sessionId: string): Promise<AuthCallback> +setAssociatedData(name: string, key: string, value: string): Promise<void> + +设置与此应用程序帐号关联的数据。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setCustomData](#setcustomdata9-1)替代。 +> +> 从 API version 7开始支持。 -获取鉴权会话的认证器回调,使用Promise方式异步返回结果。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------ | ---- | -------- | -| sessionId | string | 是 | 鉴权会话的标识。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要设置的数据的键,密钥可以自定义。 | +| value | string | 是 | 要设置的数据的值。 | **返回值:** -| 类型 | 说明 | -| ------------------------------------ | --------------------- | -| Promise<[AuthCallback](#authcallback9)> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :-------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js - import featureAbility from '@ohos.ability.featureAbility'; - const appAccountManager = account_appAccount.createAppAccountManager(); - featureAbility.getWant().then((want) => { - var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; - try { - appAccountManager.getAuthCallback(sessionId).then((callback) => { - var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", - [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", - [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", - [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; - callback.onResult(account_appAccount.ResultCode.SUCCESS, result); - }).catch((err) => { - console.log("getAuthCallback err: " + JSON.stringify(err)); - }); - } + appAccountManager.setAssociatedData("ZhangSan", "k001", "v001").then(() => { + console.log('setAssociatedData Success'); }).catch((err) => { - console.log("getWant err: " + JSON.stringify(err)); + console.log("setAssociatedData err: " + JSON.stringify(err)); }); ``` -### getAuthenticatorCallback(deprecated) +### getAllAccessibleAccounts(deprecated) -getAuthenticatorCallback(sessionId: string, callback: AsyncCallback<AuthenticatorCallback>): void +getAllAccessibleAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void -获取鉴权会话的认证器回调,使用callback回调异步返回结果。 +获取全部应用已授权帐号信息。 -> **说明:** 从API version 9开始废弃, 建议使用[getAuthCallback](#getauthcallback9)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[getAllAccounts](#getallaccounts9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ---------------------------------------- | ---- | -------- | -| sessionId | string | 是 | 鉴权会话的标识。 | -| callback | AsyncCallback<[AuthenticatorCallback](#authenticatorcallbackdeprecated)> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | --------- | +| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | **示例:** ```js - import featureAbility from '@ohos.ability.featureAbility'; const appAccountManager = account_appAccount.createAppAccountManager(); - featureAbility.getWant((err, want) => { - var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; - appAccountManager.getAuthenticatorCallback(sessionId, (err, callback) => { - if (err.code != account_appAccount.ResultCode.SUCCESS) { - console.log("getAuthenticatorCallback err: " + JSON.stringify(err)); - return; - } - var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", - [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", - [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", - [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; - callback.onResult(account_appAccount.ResultCode.SUCCESS, result); - }); + appAccountManager.getAllAccessibleAccounts((err, data)=>{ + console.debug("getAllAccessibleAccounts err:" + JSON.stringify(err)); + console.debug("getAllAccessibleAccounts data:" + JSON.stringify(data)); }); ``` -### getAuthenticatorCallback(deprecated) +### getAllAccessibleAccounts(deprecated) -getAuthenticatorCallback(sessionId: string): Promise<AuthenticatorCallback> +getAllAccessibleAccounts(): Promise<Array<AppAccountInfo>> -获取鉴权会话的认证器回调,使用Promise方式异步返回结果。 +获取全部应用已授权帐号信息。 -> **说明:** 从API version 9开始废弃, 建议使用[getAuthCallback](#getauthcallback9-1)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[getAllAccounts](#getallaccounts9-1)替代。 > -> 从 API version 8开始支持。 - -**系统能力:** SystemCapability.Account.AppAccount +> 从 API version 7开始支持。 -**参数:** +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------ | ---- | -------- | -| sessionId | string | 是 | 鉴权会话的标识。 | +**系统能力:** SystemCapability.Account.AppAccount **返回值:** -| 类型 | 说明 | -| ------------------------------------ | --------------------- | -| Promise<[AuthenticatorCallback](#authenticatorcallbackdeprecated)> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise对象。返回全部应用已授权帐号信息对象。 | **示例:** ```js - import featureAbility from '@ohos.ability.featureAbility'; - const appAccountManager = account_appAccount.createAppAccountManager(); - featureAbility.getWant().then((want) => { - var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; - appAccountManager.getAuthenticatorCallback(sessionId).then((callback) => { - var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", - [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", - [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", - [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; - callback.onResult(account_appAccount.ResultCode.SUCCESS, result); - }).catch((err) => { - console.log("getAuthenticatorCallback err: " + JSON.stringify(err)); - }); + appAccountManager.getAllAccessibleAccounts().then((data) => { + console.log('getAllAccessibleAccounts: ' + data); }).catch((err) => { - console.log("getWant err: " + JSON.stringify(err)); + console.log("getAllAccessibleAccounts err: " + JSON.stringify(err)); }); ``` -### queryAuthenticatorInfo9+ +### getAllAccounts(deprecated) -queryAuthenticatorInfo(owner: string, callback: AsyncCallback<AuthenticatorInfo>): void +getAllAccounts(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void + +获取指定应用全部帐号信息。 -获取指定应用帐号的认证器信息,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[getAccountsByOwner]替代。 +> +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------------- | ---- | ----------- | -| owner | string | 是 | 应用帐号的所有者包名。 | -| callback | AsyncCallback<[AuthenticatorInfo](#authenticatorinfo8)> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | --------- | +| owner | string | 是 | 应用包名称。 | +| callback | AsyncCallback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 应用帐号信息列表。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.queryAuthenticatorInfo("com.example.ohos.accountjsdemo", (err, data) => { - console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); - console.log('queryAuthenticatorInfo data: ' + JSON.stringify(data)); - }); - } catch (err) { - console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); - } + const selfBundle = "com.example.actsgetallaaccounts"; + appAccountManager.getAllAccounts(selfBundle, (err, data)=>{ + console.debug("getAllAccounts err:" + JSON.stringify(err)); + console.debug("getAllAccounts data:" + JSON.stringify(data)); + }); ``` -### queryAuthenticatorInfo9+ +### getAllAccounts(deprecated) -queryAuthenticatorInfo(owner: string): Promise<AuthenticatorInfo> +getAllAccounts(owner: string): Promise<Array<AppAccountInfo>> + +获取指定应用全部帐号信息。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAccountsByOwner](#getaccountsbyowner9-1)替代。 +> +> 从 API version 7开始支持。 -获取指定应用帐户的认证器信息,使用Promise方式异步返回结果。 +**需要权限:** ohos.permission.GET_ALL_APP_ACCOUNTS,仅系统应用可用。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------- | -| owner | string | 是 | 应用帐号的所有者包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ------ | +| owner | string | 是 | 应用包名称。 | **返回值:** -| 类型 | 说明 | -| -------------------------------- | --------------------- | -| Promise<[AuthenticatorInfo](#authenticatorinfo8)> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array<[AppAccountInfo](#appaccountinfo)>> | Promise对象。返回指定应用全部帐号信息对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.queryAuthenticatorInfo("com.example.ohos.accountjsdemo").then((data) => { - console.log('queryAuthenticatorInfo: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("queryAuthenticatorInfo err: " + JSON.stringify(err)); - } + const selfBundle = "com.example.actsgetallaaccounts"; + appAccountManager.getAllAccounts(selfBundle).then((data) => { + console.log('getAllAccounts: ' + data); + }).catch((err) => { + console.log("getAllAccounts err: " + JSON.stringify(err)); + }); ``` -### getAuthenticatorInfo(deprecated) +### getAccountCredential(deprecated) -getAuthenticatorInfo(owner: string, callback: AsyncCallback<AuthenticatorInfo>): void +getAccountCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void -获取指定应用帐号的认证器信息,使用callback回调异步返回结果。 +获取此应用帐号的凭据(如数字密码、人脸和PIN码等)。使用callback异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[queryAuthenticatorInfo](#queryauthenticatorinfo9)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[getCredential](#getcredential9)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------------- | ---- | ----------- | -| owner | string | 是 | 应用帐号的所有者包名。 | -| callback | AsyncCallback<[AuthenticatorInfo](#authenticatorinfo8)> | 是 | 查询结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | --------------------------- | ---- | -------------- | +| name | string | 是 | 应用帐号名称。 | +| credentialType | string | 是 | 获取此应用帐号的凭据的类型。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取此应用帐号的凭据成功时,err为undefined,data返回此应用帐号的凭据对象;否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAuthenticatorInfo("com.example.ohos.accountjsdemo", (err, data) => { - console.log("getAuthenticatorInfo err: " + JSON.stringify(err)); - console.log('getAuthenticatorInfo data: ' + JSON.stringify(data)); + appAccountManager.getAccountCredential("ZhangSan", "credentialType001", (err, result) => { + console.log("getAccountCredential err: " + JSON.stringify(err)); + console.log('getAccountCredential result: ' + result); }); ``` -### getAuthenticatorInfo(deprecated) +### getAccountCredential(deprecated) -getAuthenticatorInfo(owner: string): Promise<AuthenticatorInfo> +getAccountCredential(name: string, credentialType: string): Promise<string> -获取指定应用帐户的认证器信息,使用Promise方式异步返回结果。 +获取此应用程序帐号的凭据。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[queryAuthenticatorInfo](#queryauthenticatorinfo9-1)替代。 +> **说明:** 从API version 9开始废弃, 建议使用[getCredential](#getcredential9-1)替代。 > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----- | ------ | ---- | ----------- | -| owner | string | 是 | 应用帐号的所有者包名。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------ | ---- | ---------- | +| name | string | 是 | 应用帐号名称。 | +| credentialType | string | 是 | 要获取的凭据的类型。 | **返回值:** -| 类型 | 说明 | -| -------------------------------- | --------------------- | -| Promise<[AuthenticatorInfo](#authenticatorinfo8)> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| Promise<string> | Promise对象。返回此应用程序帐号的凭据对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - appAccountManager.getAuthenticatorInfo("com.example.ohos.accountjsdemo").then((data) => { - console.log('getAuthenticatorInfo: ' + JSON.stringify(data)); + appAccountManager.getAccountCredential("ZhangSan", "credentialType001").then((data) => { + console.log('getAccountCredential, result: ' + data); }).catch((err) => { - console.log("getAuthenticatorInfo err: " + JSON.stringify(err)); + console.log("getAccountCredential err: " + JSON.stringify(err)); }); ``` -### checkAccountLabels9+ +### getAccountExtraInfo(deprecated) -checkAccountLabels(name: string, owner: string, labels: Array<string>, callback: AsyncCallback<boolean>): void; +getAccountExtraInfo(name: string, callback: AsyncCallback<string>): void + +获取此应用帐号的额外信息(能转换成string类型的其它信息)。使用callback异步回调。 -检查指定帐户是否具有特定的标签集合,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------------------------- | ----- | --------------- | -| name | string | 是 | 应用帐户的名称。 | -| owner | string | 是 | 应用帐户的所有者。| -| labels | Array<string> | 是 | 标签数组。 | -| callback | AsyncCallback<boolean> | 是 | 检查结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------- | +| name | string | 是 | 应用帐号名称。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取此应用帐号的额外信息成功时,err为undefined,data返回此应用帐号的额外信息对象;否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var labels = ["student"]; - try { - appAccountManager.checkAccountLabels("zhangsan", "com.example.ohos.accountjsdemo", labels, (err, data) => { - console.log('checkAccountLabels: ' + JSON.stringify(data)); - console.log("checkAccountLabels err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("checkAccountLabels err: " + JSON.stringify(err)); - } + appAccountManager.getAccountExtraInfo("ZhangSan", (err, result) => { + console.log("getAccountExtraInfo err: " + JSON.stringify(err)); + console.log('getAccountExtraInfo result: ' + result); + }); ``` -### checkAccountLabels9+ +### getAccountExtraInfo(deprecated) -checkAccountLabels(name: string, owner: string, labels: Array<string>): Promise<boolean> +getAccountExtraInfo(name: string): Promise<string> -检查指定帐户是否具有特定的标签集合,使用Promise方式异步返回结果。 +获取此应用程序帐号的额外信息。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------------------------- | ----- | --------------- | -| name | string | 是 | 应用帐户的名称。 | -| owner | string | 是 | 应用帐户的所有者。| -| labels | Array<string> | 是 | 标签数组。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | ------- | +| name | string | 是 | 应用帐号名称。 | **返回值:** -| 类型 | 说明 | -| ------------------- | -------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| Promise<string> | Promise对象。返回此应用程序帐号的额外信息对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var labels = ["student"]; - try { - appAccountManager.checkAccountLabels("zhangsan", "com.example.ohos.accountjsdemo", labels).then((data) => { - console.log('checkAccountLabels: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("checkAccountLabels err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("checkAccountLabels err: " + JSON.stringify(err)); - } + appAccountManager.getAccountExtraInfo("ZhangSan").then((data) => { + console.log('getAccountExtraInfo, result: ' + data); + }).catch((err) => { + console.log("getAccountExtraInfo err: " + JSON.stringify(err)); + }); ``` -### deleteAccountCredential9+ +### getAssociatedData(deprecated) + +getAssociatedData(name: string, key: string, callback: AsyncCallback<string>): void -deleteAccountCredential(name: string, credentialType: string, callback: AsyncCallback<void>): void +获取与此应用程序帐号关联的数据。使用callback异步回调。 -删除指定应用帐户的指定类型的凭据信息,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[getCustomData](#getcustomdata9)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------------------------- | ----- | -------------- | -| name | string | 是 | 应用帐户的名称。 | -| credentialType | string | 是 | 凭据类型。 | -| callback | AsyncCallback<void> | 是 | 删除结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要获取的数据的键。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取与此应用程序帐号关联的数据成功时,err为undefined,data返回与此应用程序帐号关联的数据对象;否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.deleteAccountCredential("zhangsan", "pin", (err, data) => { - console.log('deleteAccountCredential: ' + JSON.stringify(data)); - console.log("deleteAccountCredential err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("deleteAccountCredential err: " + JSON.stringify(err)); - } + appAccountManager.getAssociatedData("ZhangSan", "k001", (err, result) => { + console.log("getAssociatedData err: " + JSON.stringify(err)); + console.log('getAssociatedData result: ' + result); + }); ``` -### deleteAccountCredential9+ +### getAssociatedData(deprecated) + +getAssociatedData(name: string, key: string): Promise<string> -deleteAccountCredential(name: string, credentialType: string): Promise<void> +获取与此应用程序帐号关联的数据。使用Promise异步回调。 -删除指定应用帐户的指定类型的凭据信息,使用Promise方式异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[getCustomData](#getcustomdata9-1)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------ | ----- | --------------- | -| name | string | 是 | 应用帐户的名称。 | -| credentialType | string | 是 | 凭据类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---- | ------ | ---- | --------- | +| name | string | 是 | 应用帐号名称。 | +| key | string | 是 | 要获取的数据的键。 | **返回值:** -| 类型 | 说明 | -| ------------------- | -------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :-------------------- | +| Promise<string> | Promise对象。返回与此应用程序帐号关联的数据对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.deleteAccountCredential("zhangsan", "pin").then((data) => { - console.log('deleteAccountCredential: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("deleteAccountCredential err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("deleteAccountCredential err: " + JSON.stringify(err)); - } + appAccountManager.getAssociatedData("ZhangSan", "k001").then((data) => { + console.log('getAssociatedData: ' + data); + }).catch((err) => { + console.log("getAssociatedData err: " + JSON.stringify(err)); + }); ``` -### selectAccountsByOptions9+ +### on('change')(deprecated) -selectAccountsByOptions(options: SelectAccountsOptions, callback: AsyncCallback<Array<AppAccountInfo>>); +on(type: 'change', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void + +订阅指定帐号所有者的帐户变更事件。使用callback异步回调。 -根据选项选择请求方可访问的帐号列表,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[on('accountChange')](#onaccountchange9)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ----------------------------------- | ----- | --------------- | -| options | SelectAccountsOptions | 是 | 选择帐户的选项。 | -| callback | AsyncCallback<[AppAccountInfo](#appaccountinfo)> | 是 | 选择结果的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------ | +| type | 'change' | 是 | 事件回调类型,支持的事件为'change',当帐号所有者更新帐号时,触发该事件。 | +| owners | Array<string> | 是 | 指示帐号的所有者。 | +| callback | Callback<Array<[AppAccountInfo](#appaccountinfo)>> | 是 | 回调函数。返回指定帐号所有者更新的帐号信息数组。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var options = { - allowedOwners: ["com.example.ohos.accountjsdemo"] - }; - try { - appAccountManager.selectAccountsByOptions(options, (err, data) => { - console.log('selectAccountsByOptions: ' + JSON.stringify(data)); - console.log("selectAccountsByOptions err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("selectAccountsByOptions err: " + JSON.stringify(err)); + function changeOnCallback(data){ + console.debug("receive change data:" + JSON.stringify(data)); + } + try{ + appAccountManager.on('change', ["com.example.actsaccounttest"], changeOnCallback); + } + catch(err){ + console.error("on accountOnOffDemo err:" + JSON.stringify(err)); } ``` -### selectAccountsByOptions9+ +### off('change')(deprecated) -selectAccountsByOptions(options: SelectAccountsOptions): Promise<Array<AppAccountInfo>> +off(type: 'change', callback?: Callback>): void + +取消订阅帐号事件。使用callback异步回调。 -根据选项选择请求方可访问的帐户列表,使用Promise方式异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[off('accountChange')](#offaccountchange9)替代。 +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------------------------- | ----- | --------------- | -| options | [SelectAccountsOptions](#selectaccountsoptions9) | 是 | 选择帐户的选项。 | - -**返回值:** - -| 类型 | 说明 | -| ------------------- | -------------------------------- | -| Promise<[AppAccountInfo](#appaccountinfo)> | Promise实例,用于获取异步返回结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------- | ---- | ------------ | +| type | 'change' | 是 | 事件回调类型,支持的事件为'change',当帐号所有者更新帐号时,触发该事件。 | +| callback | Callback> | 否 | 回调函数,返回指定帐号所有者更新的帐号信息数组。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var options = { - allowedOwners: ["com.example.ohos.accountjsdemo"] - }; - try { - appAccountManager.selectAccountsByOptions(options).then((data) => { - console.log('selectAccountsByOptions: ' + JSON.stringify(data)); - }).catch((err) => { - console.log("selectAccountsByOptions err: " + JSON.stringify(err)); - }); - } catch (err) { - console.log("selectAccountsByOptions err: " + JSON.stringify(err)); + function changeOnCallback(data){ + console.debug("receive change data:" + JSON.stringify(data)); + appAccountManager.off('change', function(){ + console.debug("off finish"); + }) + } + try{ + appAccountManager.on('change', ["com.example.actsaccounttest"], changeOnCallback); + } + catch(err){ + console.error("on accountOnOffDemo err:" + JSON.stringify(err)); } ``` -### verifyCredential9+ +### authenticate(deprecated) -verifyCredential(name: string, owner: string, callback: AuthenticatorCallback): void; +authenticate(name: string, owner: string, authType: string, options: {[key: string]: any}, callback: AuthenticatorCallback): void + +对应用帐户进行鉴权以获取OAuth令牌。使用callback异步回调。 -验证用户凭据,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[auth](#auth9)替代。 +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ----- | ----------------------- | -| name | string | 是 | 应用帐户的名称。 | -| owner | string | 是 | 应用帐户的所有者。 | -| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 认证器回调,返回验证结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | --------------- | +| name | string | 是 | 要鉴权的应用帐号名称。 | +| owner | string | 是 | 要鉴权的应用帐号所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| options | {[key: string]: any} | 是 | 鉴权所需的可选项。 | +| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 回调函数。返回鉴权结果对象。 | **示例:** ```js - const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.verifyCredential("zhangsan", "com.example.ohos.accountjsdemo", { - onResult: (resultCode, result) => { - console.log("verifyCredential onResult, resultCode:" + JSON.stringify(resultCode)); - console.log("verifyCredential onResult, result:" + JSON.stringify(result)); - }, - onRequestRedirected: (request) => { - console.log("verifyCredential onRequestRedirected, request:" + JSON.stringify(request)); - } + import featureAbility from '@ohos.ability.featureAbility'; + + function onResultCallback(code, result) { + console.log("resultCode: " + code); + console.log("result: " + JSON.stringify(result)); + } + + function onRequestRedirectedCallback(request) { + let abilityStartSetting = {want: request}; + featureAbility.startAbility(abilityStartSetting, (err)=>{ + console.log("startAbility err: " + JSON.stringify(err)); }); - } catch (err) { - console.log("verifyCredential err: " + JSON.stringify(err)); } + + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.authenticate("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", {}, { + onResult: onResultCallback, + onRequestRedirected: onRequestRedirectedCallback + }); ``` -### verifyCredential9+ +### getOAuthToken(deprecated) -verifyCredential(name: string, owner: string, options: VerifyCredentialOptions, callback: AuthenticatorCallback): void; +getOAuthToken(name: string, owner: string, authType: string, callback: AsyncCallback<string>): void -验证用户凭据,使用callback回调异步返回结果。 +获取指定应用帐号和鉴权类型的OAuth令牌。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAuthToken](#getauthtoken9)替代。 +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------- | ----- | ----------------------- | -| name | string | 是 | 应用帐户的名称。 | -| owner | string | 是 | 应用帐户的所有者。 | -| options | [VerifyCredentialOptions](#verifycredentialoptions9) | 是 | 验证凭据的选项。 | -| callback | [AuthenticatorCallback](#authenticatorcallbackdeprecated) | 是 | 认证器回调,返回验证结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| callback | AsyncCallback<string> | 是 | 回调函数。当获取指定应用帐号和鉴权类型的Auth令牌成功时,err为undefined,data返回Auth令牌对象;否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var options = { - credentialType: "pin", - credential: "123456" - }; - try { - appAccountManager.verifyCredential("zhangsan", "com.example.ohos.accountjsdemo", options, { - onResult: (resultCode, result) => { - console.log("verifyCredential onResult, resultCode:" + JSON.stringify(resultCode)); - console.log("verifyCredential onResult, result:" + JSON.stringify(result)); - }, - onRequestRedirected: (request) => { - console.log("verifyCredential onRequestRedirected, request:" + JSON.stringify(request)); - } - }); - } catch (err) { - console.log("verifyCredential err: " + JSON.stringify(err)); - } + appAccountManager.getOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { + console.log('getOAuthToken err: ' + JSON.stringify(err)); + console.log('getOAuthToken token: ' + data); + }); ``` -### setAuthenticatorProperties9+ +### getOAuthToken(deprecated) -setAuthenticatorProperties(owner: string, callback: AuthCallback): void; +getOAuthToken(name: string, owner: string, authType: string): Promise<string> + +获取指定应用帐户和鉴权类型的OAuth令牌。使用Promise异步回调。 -设置认证器属性,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[getAuthToken](#getauthtoken9-1)替代。 +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ----- | ----------------------- | -| owner | string | 是 | 认证器的所有者。 | -| callback | [AuthCallback](#authcallback9) | 是 | 认证器回调,返回设置结果。 | - -**示例:** +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | + +**返回值:** + +| 类型 | 说明 | +| --------------------- | --------------------- | +| Promise<string> | Promise对象。返回指定应用帐户和鉴权类型的OAuth令牌对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.getOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData").then((data) => { + console.log('getOAuthToken token: ' + data); + }).catch((err) => { + console.log("getOAuthToken err: " + JSON.stringify(err)); + }); + ``` + +### setOAuthToken(deprecated) + +setOAuthToken(name: string, authType: string, token: string, callback: AsyncCallback<void>): void + +设置指定应用帐号和鉴权类型的OAuth令牌。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | -------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | OAuth令牌。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置指定应用帐号和鉴权类型的OAuth令牌成功时,err为undefined;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.setOAuthToken("LiSi", "getSocialData", "xxxx", (err) => { + console.log('setOAuthToken err: ' + JSON.stringify(err)); + }); + ``` + +### setOAuthToken(deprecated) + +setOAuthToken(name: string, authType: string, token: string): Promise<void> + +设置指定应用帐户和鉴权类型的OAuth令牌。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | -------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | OAuth令牌。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.setOAuthToken("LiSi", "getSocialData", "xxxx").then(() => { + console.log('setOAuthToken successfully'); + }).catch((err) => { + console.log('setOAuthToken err: ' + JSON.stringify(err)); + }); + ``` + +### deleteOAuthToken(deprecated) + +deleteOAuthToken(name: string, owner: string, authType: string, token: string, callback: AsyncCallback<void>): void + +删除指定应用帐户和鉴权类型的OAuth令牌。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[deleteAuthToken](#deleteauthtoken9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | 要删除的OAuth令牌。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当删除指定应用帐户和鉴权类型的OAuth令牌成功时,err为undefined;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.deleteOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx", (err) => { + console.log('deleteOAuthToken err: ' + JSON.stringify(err)); + }); + ``` + +### deleteOAuthToken(deprecated) + +deleteOAuthToken(name: string, owner: string, authType: string, token: string): Promise<void> + +删除指定应用帐户和鉴权类型的OAuth令牌。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setAuthToken](#setauthtoken9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| authType | string | 是 | 鉴权类型。 | +| token | string | 是 | 要删除的OAuth令牌。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.deleteOAuthToken("LiSi", "com.example.ohos.accountjsdemo", "getSocialData", "xxxxx").then(() => { + console.log('deleteOAuthToken successfully'); + }).catch((err) => { + console.log("deleteOAuthToken err: " + JSON.stringify(err)); + }); + ``` + +### setOAuthTokenVisibility(deprecated) + +setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean, callback: AsyncCallback<void>): void + +设置指定鉴权类型的Auth令牌对特定应用的可见性。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setAuthTokenVisibility](#setauthtokenvisibility9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------- | ---- | ------------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 被设置可见性的应用包名。 | +| isVisible | boolean | 是 | 是否可见。当设置成true可见,false不可见。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当设置指定鉴权类型的Auth令牌对特定应用的可见性成功时,err为undefined;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.setOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true, (err) => { + console.log('setOAuthTokenVisibility err: ' + JSON.stringify(err)); + }); + ``` + +### setOAuthTokenVisibility(deprecated) + +setOAuthTokenVisibility(name: string, authType: string, bundleName: string, isVisible: boolean): Promise<void> + +设置指定鉴权类型的OAuth令牌对特定应用的可见性。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[setAuthTokenVisibility](#setauthtokenvisibility9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------- | ---- | ------------ | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 被设置可见性的应用包名。 | +| isVisible | boolean | 是 | 是否可见。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.setOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", true).then(() => { + console.log('setOAuthTokenVisibility successfully'); + }).catch((err) => { + console.log('setOAuthTokenVisibility err: ' + JSON.stringify(err)); + }); + ``` + +### checkOAuthTokenVisibility(deprecated) + +checkOAuthTokenVisibility(name: string, authType: string, bundleName: string, callback: AsyncCallback<boolean>): void + +检查指定鉴权类型的OAuth令牌对特定应用的可见性。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[checkAuthTokenVisibility](#checkauthtokenvisibility9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 检查可见性的应用包名。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。检查指定鉴权类型的OAuth令牌对特定应用的可见性时,err为undefined,data为true表示可见,data为false表示不可见;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.checkOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo", (err, data) => { + console.log('checkOAuthTokenVisibility err: ' + JSON.stringify(err)); + console.log('checkOAuthTokenVisibility isVisible: ' + data); + }); + ``` + +### checkOAuthTokenVisibility(deprecated) + +checkOAuthTokenVisibility(name: string, authType: string, bundleName: string): Promise<boolean> + +检查指定鉴权类型的OAuth令牌对特定应用的可见性。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[checkAuthTokenVisibility](#checkauthtokenvisibility9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | ------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 鉴权类型。 | +| bundleName | string | 是 | 用于检查可见性的应用包名。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------- | --------------------- | +| Promise<boolean> | Promise对象。返回true表示指定鉴权类型的OAuth令牌对特定应用的可见,返回false表示不可见。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.checkOAuthTokenVisibility("LiSi", "getSocialData", "com.example.ohos.accountjsdemo").then((data) => { + console.log('checkOAuthTokenVisibility isVisible: ' + data); + }).catch((err) => { + console.log('checkOAuthTokenVisibility err: ' + JSON.stringify(err)); + }); + ``` + +### getAllOAuthTokens(deprecated) + +getAllOAuthTokens(name: string, owner: string, callback: AsyncCallback<Array<OAuthTokenInfo>>): void + +获取指定应用对调用方全部可见的OAuth令牌。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAllAuthTokens](#getallauthtokens9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | +| callback | AsyncCallback<Array< [OAuthTokenInfo](#oauthtokeninfodeprecated)>> | 是 | 回调函数。当获取指定应用对调用方全部可见的OAuth令牌成功时,err为undefined,data为全部可见的OAuth令牌数组;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.getAllOAuthTokens("LiSi", "com.example.ohos.accountjsdemo", (err, data) => { + console.log("getAllOAuthTokens err: " + JSON.stringify(err)); + console.log('getAllOAuthTokens data: ' + JSON.stringify(data)); + }); + ``` + +### getAllOAuthTokens(deprecated) + +getAllOAuthTokens(name: string, owner: string): Promise<Array<OAuthTokenInfo>> + +获取指定应用帐户对调用方可见的全部OAuth令牌。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAllAuthTokens](#getallauthtokens9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------- | +| name | string | 是 | 应用帐号的名称。 | +| owner | string | 是 | 应用帐号的所有者包名。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------- | --------------------- | +| Promise<Array< [OAuthTokenInfo](#oauthtokeninfodeprecated)>> | Promise对象。返回指定应用帐户对调用方可见的全部OAuth令牌对象。 | + +**示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - try { - appAccountManager.setAuthenticatorProperties("com.example.ohos.accountjsdemo", { - onResult: (resultCode, result) => { - console.log("setAuthenticatorProperties onResult, resultCode:" + JSON.stringify(resultCode)); - console.log("setAuthenticatorProperties onResult, result:" + JSON.stringify(result)); - }, - onRequestRedirected: (request) => { - console.log("setAuthenticatorProperties onRequestRedirected, request:" + JSON.stringify(request)); - } + appAccountManager.getAllOAuthTokens("LiSi", "com.example.ohos.accountjsdemo").then((data) => { + console.log('getAllOAuthTokens data: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("getAllOAuthTokens err: " + JSON.stringify(err)); + }); + ``` + +### getOAuthList(deprecated) + +getOAuthList(name: string, authType: string, callback: AsyncCallback<Array<string>>): void + +获取指定应用帐户和鉴权类型的OAuth令牌的授权列表。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAuthList](#getauthlist9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ----------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 应用帐号的鉴权类型的OAuth令牌的授权列表。 | +| callback | AsyncCallback<Array<string>> | 是 | 回调函数。当获取指定应用帐户和鉴权类型的OAuth令牌的授权列表成功时,err为undefined,data为OAuth令牌的授权列表;否则为错误对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.getOAuthList("com.example.ohos.accountjsdemo", "getSocialData", (err, data) => { + console.log('getOAuthList err: ' + JSON.stringify(err)); + console.log('getOAuthList data: ' + JSON.stringify(data)); + }); + ``` + +### getOAuthList(deprecated) + +getOAuthList(name: string, authType: string): Promise<Array<string>> + +获取指定应用帐户和鉴权类型的OAuth令牌的授权列表。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAuthList](#getauthlist9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ----------------------- | +| name | string | 是 | 应用帐号的名称。 | +| authType | string | 是 | 应用帐号的鉴权类型的OAuth令牌的授权列表。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------- | --------------------- | +| Promise<Array<string>> | Promise对象。返回指定应用帐户和鉴权类型的OAuth令牌的授权列表对象。 | + +**示例:** + + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.getOAuthList("com.example.ohos.accountjsdemo", "getSocialData").then((data) => { + console.log('getOAuthList data: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("getOAuthList err: " + JSON.stringify(err)); + }); + ``` + +### getAuthenticatorCallback(deprecated) + +getAuthenticatorCallback(sessionId: string, callback: AsyncCallback<AuthenticatorCallback>): void + +获取鉴权会话的认证器回调。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAuthCallback](#getauthcallback9)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ---------------------------------------- | ---- | -------- | +| sessionId | string | 是 | 鉴权会话的标识。 | +| callback | AsyncCallback<[AuthenticatorCallback](#authenticatorcallbackdeprecated)> | 是 | 回调函数。当获取鉴权会话的认证器回调函数成功时,err为undefined,data为认证器回调函数;否则为错误对象。 | + +**示例:** + + ```js + import featureAbility from '@ohos.ability.featureAbility'; + const appAccountManager = account_appAccount.createAppAccountManager(); + featureAbility.getWant((err, want) => { + var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; + appAccountManager.getAuthenticatorCallback(sessionId, (err, callback) => { + if (err.code != account_appAccount.ResultCode.SUCCESS) { + console.log("getAuthenticatorCallback err: " + JSON.stringify(err)); + return; + } + var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", + [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", + [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", + [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; + callback.onResult(account_appAccount.ResultCode.SUCCESS, result); + }); + }); + ``` + +### getAuthenticatorCallback(deprecated) + +getAuthenticatorCallback(sessionId: string): Promise<AuthenticatorCallback> + +获取鉴权会话的认证器回调。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[getAuthCallback](#getauthcallback9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | -------- | +| sessionId | string | 是 | 鉴权会话的标识。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------------------------ | --------------------- | +| Promise<[AuthenticatorCallback](#authenticatorcallbackdeprecated)> | Promise对象。返回鉴权会话的认证器回调对象。 | + +**示例:** + + ```js + import featureAbility from '@ohos.ability.featureAbility'; + + const appAccountManager = account_appAccount.createAppAccountManager(); + featureAbility.getWant().then((want) => { + var sessionId = want.parameters[account_appAccount.Constants.KEY_SESSION_ID]; + appAccountManager.getAuthenticatorCallback(sessionId).then((callback) => { + var result = {[account_appAccount.Constants.KEY_NAME]: "LiSi", + [account_appAccount.Constants.KEY_OWNER]: "com.example.ohos.accountjsdemo", + [account_appAccount.Constants.KEY_AUTH_TYPE]: "getSocialData", + [account_appAccount.Constants.KEY_TOKEN]: "xxxxxx"}; + callback.onResult(account_appAccount.ResultCode.SUCCESS, result); + }).catch((err) => { + console.log("getAuthenticatorCallback err: " + JSON.stringify(err)); }); - } catch (err) { - console.log("setAuthenticatorProperties err: " + JSON.stringify(err)); - } + }).catch((err) => { + console.log("getWant err: " + JSON.stringify(err)); + }); ``` -### setAuthenticatorProperties9+ +### getAuthenticatorInfo(deprecated) -setAuthenticatorProperties(owner: string, options: SetPropertiesOptions, callback: AuthCallback): void; +getAuthenticatorInfo(owner: string, callback: AsyncCallback<AuthenticatorInfo>): void + +获取指定应用帐号的认证器信息。使用callback异步回调。 -设置认证器属性,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃, 建议使用[queryAuthenticatorInfo](#queryauthenticatorinfo9)替代。 +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.AppAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ----- | ----------------------- | -| owner | string | 是 | 认证器的所有者。 | -| options | [SetPropertiesOptions](#setpropertiesoptions9) | 是 | 设置属性的选项。 | -| callback | [AuthCallback](#authcallback9) | 是 | 认证器回调,返回设置结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ----------- | +| owner | string | 是 | 应用帐号的所有者包名。 | +| callback | AsyncCallback<[AuthenticatorInfo](#authenticatorinfo8)> | 是 | 回调函数。当获取指定应用帐号的认证器信息成功时,err为undefined,data为认证器信息对象;否则为错误对象。 | **示例:** ```js const appAccountManager = account_appAccount.createAppAccountManager(); - var options = { - properties: {"prop1": "value1"} - }; - try { - appAccountManager.setAuthenticatorProperties("com.example.ohos.accountjsdemo", options, { - onResult: (resultCode, result) => { - console.log("setAuthenticatorProperties onResult, resultCode:" + JSON.stringify(resultCode)); - console.log("setAuthenticatorProperties onResult, result:" + JSON.stringify(result)); - }, - onRequestRedirected: (request) => { - console.log("setAuthenticatorProperties onRequestRedirected, request:" + JSON.stringify(request)); - } - }); - } catch (err) { - console.log("setAuthenticatorProperties err: " + JSON.stringify(err)); - } + appAccountManager.getAuthenticatorInfo("com.example.ohos.accountjsdemo", (err, data) => { + console.log("getAuthenticatorInfo err: " + JSON.stringify(err)); + console.log('getAuthenticatorInfo data: ' + JSON.stringify(data)); + }); + ``` + +### getAuthenticatorInfo(deprecated) + +getAuthenticatorInfo(owner: string): Promise<AuthenticatorInfo> + +获取指定应用帐户的认证器信息。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[queryAuthenticatorInfo](#queryauthenticatorinfo9-1)替代。 +> +> 从 API version 8开始支持。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------ | ---- | ----------- | +| owner | string | 是 | 应用帐号的所有者包名。 | + +**返回值:** + +| 类型 | 说明 | +| -------------------------------- | --------------------- | +| Promise<[AuthenticatorInfo](#authenticatorinfo8)> | Promise对象。返回指定应用帐户的认证器信息对象。 | + +**示例:** + ```js + const appAccountManager = account_appAccount.createAppAccountManager(); + appAccountManager.getAuthenticatorInfo("com.example.ohos.accountjsdemo").then((data) => { + console.log('getAuthenticatorInfo: ' + JSON.stringify(data)); + }).catch((err) => { + console.log("getAuthenticatorInfo err: " + JSON.stringify(err)); + }); ``` ## AppAccountInfo diff --git a/zh-cn/application-dev/reference/apis/js-apis-application-AccessibilityExtensionAbility.md b/zh-cn/application-dev/reference/apis/js-apis-application-AccessibilityExtensionAbility.md index f9a869d66f263dc29bb2e10cbf488785f5375f66..ea67b7e858460f02207609e1b16c42d33475b878 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-application-AccessibilityExtensionAbility.md +++ b/zh-cn/application-dev/reference/apis/js-apis-application-AccessibilityExtensionAbility.md @@ -2,7 +2,7 @@ **AccessibilityExtensionAbility**基于ExtensionAbility框架,提供辅助功能业务的能力。 ->**说明:** +>![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > >本模块首批接口从API version 9开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 > @@ -32,36 +32,10 @@ import AccessibilityExtensionAbility from '@ohos.application.AccessibilityExtens | 名称 | 参数类型 | 可读 | 可写 | 说明 | | --------- | ---------------------------------------- | ---- | ---- | ---------- | -| eventType | [EventType](js-apis-accessibility.md#EventType) \| [WindowUpdateType](js-apis-accessibility.md#WindowUpdateType) \| [TouchGuideType](touchguidetype) \| [GestureType](gesturetype) \| [PageUpdateType](pageupdatetype) | 是 | 否 | 具体事件类型。 | +| eventType | [EventType](js-apis-accessibility.md#EventType) \| [WindowUpdateType](js-apis-accessibility.md#WindowUpdateType) \| [TouchGuideType](#touchguidetype) \| [GestureType](#gesturetype) \| [PageUpdateType](#pageupdatetype) | 是 | 否 | 具体事件类型。 | | target | AccessibilityElement | 是 | 否 | 发生事件的目标组件。 | | timeStamp | number | 是 | 否 | 事件时间戳。 | -## GesturePath - -表示手势路径信息。 - -**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core - -### 属性 - -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| ------------ | ---------------------------------------- | ---- | ---- | ------ | -| points | Array<[GesturePoint](gesturepoint)> | 是 | 是 | 手势。 | -| durationTime | number | 是 | 是 | 手势总耗时。 | - -## GesturePoint - -表示手势触摸点。 - -**系统能力**:以下各项对应的系统能力均为 SystemCapability.BarrierFree.Accessibility.Core - -### 属性 - -| 名称 | 参数类型 | 可读 | 可写 | 说明 | -| --------- | ------ | ---- | ---- | ------- | -| positionX | number | 是 | 是 | 触摸点X坐标。 | -| positionY | number | 是 | 是 | 触摸点Y坐标。 | - ## GestureType 手势事件类型。 @@ -117,16 +91,12 @@ onConnect(): void; **系统能力:** SystemCapability.BarrierFree.Accessibility.Core -**参数:** - -无 - **示例:** ```ts onConnect(): void { console.log("AxExtensionAbility onConnect"); -} +}; ``` ## AccessibilityExtensionAbility.onDisconnect @@ -137,16 +107,12 @@ onDisconnect(): void; **系统能力:** SystemCapability.BarrierFree.Accessibility.Core -**参数:** - -无 - **示例:** ```ts onDisconnect(): void { console.log("AxExtensionAbility onDisconnect"); -} +}; ``` ## AccessibilityExtensionAbility.onAccessibilityEvent @@ -171,7 +137,7 @@ onAccessibilityEvent(event: AccessibilityEvent): void { if (event.eventType == 'click') { console.log("AxExtensionAbility onAccessibilityEvent: click"); } -} +}; ``` ## AccessibilityExtensionAbility.onKeyEvent @@ -198,5 +164,5 @@ onKeyEvent(keyEvent: inputEventClient.KeyEvent): boolean { return true; } return false; -} +}; ``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-bundle-ShortcutInfo.md b/zh-cn/application-dev/reference/apis/js-apis-bundle-ShortcutInfo.md index 3072cd0b3855380720e646a73c9cfb0aeb9e38fc..e5460e4565189b78098c79ff7eaaf4820ecdd65d 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-bundle-ShortcutInfo.md +++ b/zh-cn/application-dev/reference/apis/js-apis-bundle-ShortcutInfo.md @@ -1,6 +1,6 @@ -# ShortcutInfo - +# ShortcutInfo(deprecated) +> 从API version 9开始不再维护,建议使用[ShortcutInfo](js-apis-bundleManager-shortcutInfo.md)替代 > **说明:** > @@ -12,9 +12,9 @@ -## ShortcutWant +## ShortcutWant(deprecated) -快捷方式所指向的目标信息。 +> 从API version 9开始不再维护,建议使用[ShortcutWant](js-apis-bundleManager-shortcutInfo.md)替代 **系统能力:** 以下各项对应的系统能力均为SystemCapability.BundleManager.BundleFramework @@ -26,9 +26,10 @@ | targetModule9+ | string | 是 | 否 | 快捷方式的目标模块 | | targetClass | string | 是 | 否 | 快捷方式所需的目标类 | -## ShortcutInfo +## ShortcutInfo(deprecated) + +> 从API version 9开始不再维护,建议使用[ShortcutInfo](js-apis-bundleManager-shortcutInfo.md)替代。 -快捷方式属性信息。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.BundleManager.BundleFramework diff --git a/zh-cn/application-dev/reference/apis/js-apis-bundleManager-shortcutInfo.md b/zh-cn/application-dev/reference/apis/js-apis-bundleManager-shortcutInfo.md new file mode 100644 index 0000000000000000000000000000000000000000..64632e0107e5766cac4eab9ca44e0b8344c0365f --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-bundleManager-shortcutInfo.md @@ -0,0 +1,38 @@ +# ShortcutInfo + +应用配置文件中定义的快捷方式信息,FA模型配置在[config.json](../../quick-start/package-structure.md)文件中进行配置,Stage模型配置参考[shortcuts对象内部结构](../../quick-start/stage-structure.md#shortcuts对象内部结构) + +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +本模块接口为系统接口。 + +## ShortcutWant + +**系统能力:** SystemCapability.BundleManager.BundleFramework.Launcher + +**系统接口:** 此接口为系统接口。 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------------------------- | ------ | ---- | ---- | -------------------- | +| targetBundle | string | 是 | 否 | 快捷方式的目标bundleName | +| targetModule | string | 是 | 否 | 快捷方式的目标moduleName | +| targetAbility | string | 是 | 否 | 快捷方式所需的目标abilityName | + +## ShortcutInfo + +**系统能力:** SystemCapability.BundleManager.BundleFramework.Launcher + + **系统接口:** 此接口为系统接口。 + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ----------------------- | ------------------------------------------ | ---- | ---- | ---------------------------- | +| id | string | 是 | 否 | 快捷方式所属应用程序的Id | +| bundleName | string | 是 | 否 | 包含快捷方式的包名称 | +| moduleName | string | 是 | 否 | 快捷方式的模块名 | +| hostAbility | string | 是 | 否 | 快捷方式的本地Ability名称 | +| icon | string | 是 | 否 | 快捷方式的图标 | +| iconId | number | 是 | 否 | 快捷方式的图标Id | +| label | string | 是 | 否 | 快捷方式的标签 | +| labelId | number | 是 | 否 | 快捷方式的标签Id | +| wants | Array\<[ShortcutWant](#shortcutwant)> | 是 | 否 | 快捷方式所需要的信息 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-device-manager.md b/zh-cn/application-dev/reference/apis/js-apis-device-manager.md index a6f6fa765108af8a4db7b5b195fbe0bd9f678654..3b7ed92b83cddfb82a351e6482904a35e61d5f74 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-device-manager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-device-manager.md @@ -35,13 +35,24 @@ createDeviceManager(bundleName: string, callback: AsyncCallback<DeviceManager **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 参数名 | 类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- | ------------------------------------ | | bundleName | string | 是 | 指示应用程序的包名。 | | callback | AsyncCallback<[DeviceManager](#devicemanager)> | 是 | DeviceManager实例创建时调用的回调,返回设备管理器对象实例。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | +| 11600102 | Failed to obtain the service. | + +**示例:** + ```js try { deviceManager.createDeviceManager("ohos.samples.jshelloworld", (err, data) => { @@ -209,7 +220,6 @@ createDeviceManager(bundleName: string, callback: AsyncCallback<DeviceManager 设备管理实例,用于获取可信设备和本地设备的相关信息。在调用DeviceManager的方法前,需要先通过createDeviceManager构建一个DeviceManager实例dmInstance。 - ### release release(): void @@ -218,7 +228,16 @@ release(): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js try { dmInstance.release(); @@ -227,7 +246,6 @@ release(): void } ``` - ### getTrustedDeviceListSync getTrustedDeviceListSync(): Array<DeviceInfo> @@ -236,12 +254,22 @@ getTrustedDeviceListSync(): Array<DeviceInfo> **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 返回值: +**返回值:** + | 名称 | 说明 | | -------------------------------------- | --------- | | Array<[DeviceInfo](#deviceinfo)> | 返回可信设备列表。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js try { var deviceInfoList = dmInstance.getTrustedDeviceListSync(); @@ -250,7 +278,6 @@ getTrustedDeviceListSync(): Array<DeviceInfo> } ``` - ### getTrustedDeviceList8+ getTrustedDeviceList(callback:AsyncCallback<Array<DeviceInfo>>): void @@ -259,12 +286,22 @@ getTrustedDeviceList(callback:AsyncCallback<Array<DeviceInfo>>): voi **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | --------------------- | | callback | AsyncCallback<Array<[DeviceInfo](#deviceinfo)>> | 是 | 获取所有可信设备列表的回调,返回设备信息。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js try { dmInstance.getTrustedDeviceList((err, data) => { @@ -287,22 +324,28 @@ getTrustedDeviceList(): Promise<Array<DeviceInfo>> **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 返回值: +**返回值:** + | 类型 | 说明 | | ---------------------------------------- | --------------------- | | Promise<Array<[DeviceInfo](#deviceinfo)>> | Promise实例,用于获取异步返回结果。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js - try { - dmInstance.getTrustedDeviceList().then((data) => { - console.log('get trusted device info: ' + JSON.stringify(data)); - }).catch((err) => { - console.error("getTrustedDeviceList errCode:" + err.code + ",errMessage:" + err.message); - }); - } catch (err) { + dmInstance.getTrustedDeviceList().then((data) => { + console.log('get trusted device info: ' + JSON.stringify(data)); + }).catch((err) => { console.error("getTrustedDeviceList errCode:" + err.code + ",errMessage:" + err.message); - } + }); ``` ### getLocalDeviceInfoSync8+ @@ -313,12 +356,22 @@ getLocalDeviceInfoSync(): [DeviceInfo](#deviceinfo) **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 返回值: - | 名称 | 说明 | - | -------------------------------------- | --------- | - | Array<[DeviceInfo](#deviceinfo)> | 返回本地设备列表。 | +**返回值:** + + | 名称 | 说明 | + | ------------------------- | ---------------- | + | [DeviceInfo](#deviceinfo) | 返回本地设备列表。 | + +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** -- 示例: ```js try { var deviceInfo = dmInstance.getLocalDeviceInfoSync(); @@ -327,7 +380,6 @@ getLocalDeviceInfoSync(): [DeviceInfo](#deviceinfo) } ``` - ### getLocalDeviceInfo8+ getLocalDeviceInfo(callback:AsyncCallback<DeviceInfo>): void @@ -336,12 +388,22 @@ getLocalDeviceInfo(callback:AsyncCallback<DeviceInfo>): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | --------- | | callback | AsyncCallback<[DeviceInfo](#deviceinfo)> | 是 | 获取本地设备信息。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js try { dmInstance.getLocalDeviceInfo((err, data) => { @@ -364,22 +426,28 @@ getLocalDeviceInfo(): Promise<DeviceInfo> **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 返回值: +**返回值:** + | 类型 | 说明 | | ---------------------------------------- | --------------------- | | Promise<[DeviceInfo](#deviceinfo)> | Promise实例,用于获取异步返回结果。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------------------------- | +| 11600101| Failed to execute the function. | + +**示例:** + ```js - try { - dmInstance.getLocalDeviceInfo().then((data) => { - console.log('get local device info: ' + JSON.stringify(data)); - }).catch((err) => { - console.error("getLocalDeviceInfo errCode:" + err.code + ",errMessage:" + err.message); - }); - } catch (err) { + dmInstance.getLocalDeviceInfo().then((data) => { + console.log('get local device info: ' + JSON.stringify(data)); + }).catch((err) => { console.error("getLocalDeviceInfo errCode:" + err.code + ",errMessage:" + err.message); - } + }); ``` ### startDeviceDiscovery8+ @@ -390,12 +458,23 @@ startDeviceDiscovery(subscribeInfo: SubscribeInfo): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: - | 名称 | 参数类型 | 必填 | 说明 | +**参数:** + + | 名称 | 参数类型 | 必填 | 说明 | | ------------- | ------------------------------- | ---- | ----- | - | subscribeInfo | [SubscribeInfo](#subscribeinfo) | 是 | 发现信息。 | + | subscribeInfo | [SubscribeInfo](#subscribeinfo) | 是 | 发现信息。| + +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | +| 11600104 | Discovery invalid. | + +**示例:** -- 示例: ```js // 生成发现标识,随机数确保每次调用发现接口的标识不一致 var subscribeId = Math.floor(Math.random() * 10000 + 1000); @@ -423,13 +502,24 @@ startDeviceDiscovery(subscribeInfo: SubscribeInfo, filterOptions?: string): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: - | 名称 | 参数类型 | 必填 | 说明 | - | ------------- | ------------------------------- | ---- | ----- | +**参数:** + + | 名称 | 参数类型 | 必填 | 说明 | + | ------------- | ------------------------------- | ---- | ----- | | subscribeInfo | [SubscribeInfo](#subscribeinfo) | 是 | 发现信息。 | - | filterOptions | string | 否 | 发现设备过滤信息。| + | filterOptions | string | 否 | 发现设备过滤信息。| + +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | +| 11600104 | Discovery invalid. | + +**示例:** -- 示例: ```js // 生成发现标识,随机数确保每次调用发现接口的标识不一致 var subscribeId = Math.floor(Math.random() * 10000 + 1000); @@ -457,7 +547,7 @@ startDeviceDiscovery(subscribeInfo: SubscribeInfo, filterOptions?: string): void console.error("startDeviceDiscovery errCode:" + err.code + ",errMessage:" + err.message); } ``` - + ### stopDeviceDiscovery stopDeviceDiscovery(subscribeId: number): void @@ -466,12 +556,22 @@ stopDeviceDiscovery(subscribeId: number): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | ----------- | ------ | ---- | ----- | | subscribeId | number | 是 | 发现标识。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js // 入参需要和startDeviceDiscovery接口传入的subscribeId配对使用 try { @@ -489,12 +589,23 @@ publishDeviceDiscovery(publishInfo: PublishInfo): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | ------------- | ------------------------------- | ---- | ----- | | publishInfo | [PublishInfo](#publishinfo) | 是 | 发布设备发现信息。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | +| 11600105 | Publish invalid. | + +**示例:** + ```js // 生成发布标识,随机数确保每次调用发布接口的标识不一致 var publishId = Math.floor(Math.random() * 10000 + 1000); @@ -519,12 +630,22 @@ unPublishDeviceDiscovery(publishId: number): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | ----------- | -------- | ---- | ----- | | publishId | number | 是 | 发布标识。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js // 入参需要和publishDeviceDiscovery接口传入的publishId配对使用 try { @@ -542,14 +663,25 @@ authenticateDevice(deviceInfo: DeviceInfo, authParam: AuthParam, callback: Async **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- | ------- | | deviceInfo | [DeviceInfo](#deviceinfo) | 是 | 设备信息。 | | authParam | [AuthParam](#authparam) | 是 | 认证参数。 | | callback | AsyncCallback<{ deviceId: string, pinToken ?: number }> | 是 | 认证结果回调。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | +| 11600103 | Authentication invalid. | + +**示例:** + ```js // 认证的设备信息,可以从发现的结果中获取 var deviceInfo ={ @@ -567,8 +699,8 @@ authenticateDevice(deviceInfo: DeviceInfo, authParam: AuthParam, callback: Async console.error("authenticateDevice errCode:" + err.code + ",errMessage:" + err.message); return; } - console.info(TAG + "authenticateDevice result:" + JSON.stringify(data)); - token = data.pinToken; + console.info("authenticateDevice result:" + JSON.stringify(data)); + let token = data.pinToken; }); } catch (err) { console.error("authenticateDevice errCode:" + err.code + ",errMessage:" + err.message); @@ -583,12 +715,22 @@ unAuthenticateDevice(deviceInfo: DeviceInfo): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | ---------- | ------------------------- | ---- | ----- | | deviceInfo | [DeviceInfo](#deviceinfo) | 是 | 设备信息。 | -- 示例: +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** + ```js try { dmInstance.unAuthenticateDevice(deviceInfo); @@ -597,7 +739,6 @@ unAuthenticateDevice(deviceInfo: DeviceInfo): void } ``` - ### verifyAuthInfo verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback<{deviceId: string, level: number}>): void @@ -606,13 +747,23 @@ verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback<{deviceId: string, le **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ------- | | authInfo | [AuthInfo](#authinfo) | 是 | 认证信息。 | - | authInfo | AsyncCallback<{ deviceId: string, level: number }> | 是 | 验证结果回调。 | + | callback | AsyncCallback<{ deviceId: string, level: number }> | 是 | 验证结果回调。 | + +**错误码:** + +以下的错误码的详细介绍请参见[设备管理错误码](../errorcodes/errorcode-device-manager.md) + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------------- | +| 11600101 | Failed to execute the function. | + +**示例:** -- 示例: ```js let authInfo = { "authType": 1, @@ -625,13 +776,104 @@ verifyAuthInfo(authInfo: AuthInfo, callback: AsyncCallback<{deviceId: string, le console.error("verifyAuthInfo errCode:" + err.code + ",errMessage:" + err.message); return; } - console.info(TAG + "verifyAuthInfo result:" + JSON.stringify(data)); + console.info("verifyAuthInfo result:" + JSON.stringify(data)); }); } catch (err) { console.error("verifyAuthInfo errCode:" + err.code + ",errMessage:" + err.message); } ``` +### setUserOperation9+ + +setUserOperation(operateAction: number, params: string): void; + +设置用户ui操作行为。 + +**系统能力**:SystemCapability.DistributedHardware.DeviceManager + +**参数:** + + | 名称 | 参数类型 | 必填 | 说明 | + | ------------- | --------------- | ---- | ------------------- | + | operateAction | number | 是 | 用户操作动作。 | + | params | string | 是 | 表示用户的输入参数。 | + +**示例:** + + ```js + try { + /* + operateAction = 0 - 允许授权 + operateAction = 1 - 取消授权 + operateAction = 2 - 授权框用户操作超时 + operateAction = 3 - 取消pin码框展示 + operateAction = 4 - 取消pin码输入框展示 + operateAction = 5 - pin码输入框确定操作 + */ + let operation = 0; + this.dmInstance.setUserOperation(operation, "extra") + } catch (err) { + console.error("setUserOperation errCode:" + err.code + ",errMessage:" + err.message); + } + ``` + +### on('uiStateChange')9+ + +on(type: 'uiStateChange', callback: Callback<{ param: string}>): void; + +ui状态变更回调。 + +**系统能力**:SystemCapability.DistributedHardware.DeviceManager + +**参数:** + + | 名称 | 参数类型 | 必填 | 说明 | + | -------- | ------------------------------------ | ---- | ------------------------------ | + | type | string | 是 | 注册的设备管理器 ui 状态回调,以便在状态改变时通知应用。 | + | callback | Callback<{ param: string}> | 是 | 指示要注册的设备管理器 ui 状态回调,返回ui状态。 | + +**示例:** + + ```js + try { + dmInstance.on('uiStateChange', (data) => { + console.log("uiStateChange executed, dialog closed" + JSON.stringify(data)) + var tmpStr = JSON.parse(data.param) + this.isShow = tmpStr.verifyFailed + console.log("uiStateChange executed, dialog closed" + this.isShow) + if (!this.isShow) { + this.destruction() + } + }); + } catch (err) { + console.error("uiStateChange errCode:" + err.code + ",errMessage:" + err.message); + } + ``` + +### off('uiStateChange')9+ + +off(type: 'uiStateChange', callback?: Callback<{ param: string}>): void; + +取消ui状态变更回调 + +**系统能力**:SystemCapability.DistributedHardware.DeviceManager + +**参数:** + + | 名称 | 参数类型 | 必填 | 说明 | + | -------- | ------------------------------------- | ---- | ------------------------------ | + | type | string | 是 | 取消注册的设备管理器 ui 状态回调。 | + | callback | Callback<{ param: string}> | 是 | 指示要取消注册的设备管理器 ui 状态,返回UI状态。 | + +**示例:** + + ```js + try { + dmInstance.off('uiStateChange'); + } catch (err) { + console.error("uiStateChange errCode:" + err.code + ",errMessage:" + err.message); + } + ``` ### on('deviceStateChange') @@ -641,13 +883,15 @@ on(type: 'deviceStateChange', callback: Callback<{ action: DeviceStateChange **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ------------------------------ | | type | string | 是 | 注册设备状态回调,固定为deviceStateChange。 | | callback | Callback<{ action: [DeviceStateChangeAction](#devicestatechangeaction), device: [DeviceInfo](#deviceinfo) }> | 是 | 指示要注册的设备状态回调,返回设备状态和设备信息。 | -- 示例: +**示例:** + ```js try { dmInstance.on('deviceStateChange', (data) => { @@ -658,7 +902,6 @@ on(type: 'deviceStateChange', callback: Callback<{ action: DeviceStateChange } ``` - ### off('deviceStateChange') off(type: 'deviceStateChange', callback?: Callback<{ action: DeviceStateChangeAction, device: DeviceInfo }>): void @@ -667,13 +910,15 @@ off(type: 'deviceStateChange', callback?: Callback<{ action: DeviceStateChang **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | --------------------------- | | type | string | 是 | 根据应用程序的包名取消注册设备状态回调。 | | callback | Callback<{ action: [DeviceStateChangeAction](#devicestatechangeaction), device: [DeviceInfo](#deviceinfo)  }> | 是 | 指示要取消注册的设备状态回调,返回设备状态和设备信息。 | -- 示例: +**示例:** + ```js try { dmInstance.off('deviceStateChange', (data) => { @@ -684,7 +929,6 @@ off(type: 'deviceStateChange', callback?: Callback<{ action: DeviceStateChang } ``` - ### on('deviceFound') on(type: 'deviceFound', callback: Callback<{ subscribeId: number, device: DeviceInfo }>): void @@ -693,13 +937,15 @@ on(type: 'deviceFound', callback: Callback<{ subscribeId: number, device: Dev **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | -------------------------- | | type | string | 是 | 注册设备发现回调,以便在发现周边设备时通知应用程序。 | | callback | Callback<{ subscribeId: number, device: DeviceInfo }> | 是 | 注册设备发现的回调方法。 | -- 示例: +**示例:** + ```js try { dmInstance.on('deviceFound', (data) => { @@ -718,13 +964,15 @@ off(type: 'deviceFound', callback?: Callback<{ subscribeId: number, device: D **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | --------------------------- | | type | string | 是 | 取消注册设备发现回调。 | | callback | Callback<{ subscribeId: number, device: [DeviceInfo](#deviceinfo) }> | 是 | 指示要取消注册的设备发现回调,返回设备状态和设备信息。 | -- 示例: +**示例:** + ```js try { dmInstance.off('deviceFound', (data) => { @@ -743,13 +991,15 @@ on(type: 'discoverFail', callback: Callback<{ subscribeId: number, reason: nu **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ------------------------------ | | type | string | 是 | 注册设备发现失败回调,以便在发现周边设备失败时通知应用程序。 | | callback | Callback<{ subscribeId: number, reason: number }> | 是 | 注册设备发现失败的回调方法。 | -- 示例: +**示例:** + ```js try { dmInstance.on('discoverFail', (data) => { @@ -768,13 +1018,15 @@ off(type: 'discoverFail', callback?: Callback<{ subscribeId: number, reason: **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ----------------- | | type | string | 是 | 取消注册设备发现失败回调。 | | callback | Callback<{ subscribeId: number, reason: number }> | 是 | 指示要取消注册的设备发现失败回调。 | -- 示例: +**示例:** + ```js try { dmInstance.off('discoverFail', (data) => { @@ -793,13 +1045,16 @@ on(type: 'publishSuccess', callback: Callback<{ publishId: number }>): voi **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | -------------------------- | | type | string | 是 | 注册发布设备成功回调,以便将发布成功时通知应用程序。 | | callback | Callback<{ publishId: number }> | 是 | 注册设备发布成功的回调方法。 | -- 示例: + +**示例:** + ```js try { dmInstance.on('publishSuccess', (data) => { @@ -818,13 +1073,15 @@ off(type: 'publishSuccess', callback?: Callback<{ publishId: number }>): v **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | --------------------------- | | type | string | 是 | 取消注册设备发布成功回调。 | | callback | Callback<{ publishId: number }> | 是 | 指示要取消注册的设备发布成功回调。 | -- 示例: +**示例:** + ```js try { dmInstance.off('publishSuccess', (data) => { @@ -843,13 +1100,15 @@ on(type: 'publishFail', callback: Callback<{ publishId: number, reason: numbe **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ----------------------------------------------------- | ---- | ------------------------------ | | type | string | 是 | 注册设备发布失败回调,以便在发布设备失败时通知应用程序。 | | callback | Callback<{ publishId: number, reason: number }> | 是 | 注册设备发布失败的回调方法。 | -- 示例: +**示例:** + ```js try { dmInstance.on('publishFail', (data) => { @@ -868,13 +1127,15 @@ off(type: 'publishFail', callback?: Callback<{ publishId: number, reason: num **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ----------------------------------------------------- | ---- | ----------------- | | type | string | 是 | 取消注册设备发布失败回调。 | | callback | Callback<{ publishId: number, reason: number }> | 是 | 指示要取消注册设备发布失败回调。 | -- 示例: +**示例:** + ```js try { dmInstance.off('publishFail', (data) => { @@ -893,13 +1154,15 @@ on(type: 'serviceDie', callback: () => void): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ----------------------- | ---- | ---------------------------------------- | | type | string | 是 | 注册serviceDie回调,以便在devicemanager服务异常终止时通知应用程序。 | | callback | () => void | 是 | 注册serviceDie的回调方法。 | -- 示例: +**示例:** + ```js try { dmInstance.on("serviceDie", () => { @@ -910,7 +1173,6 @@ on(type: 'serviceDie', callback: () => void): void } ``` - ### off('serviceDie') off(type: 'serviceDie', callback?: () => void): void @@ -919,13 +1181,15 @@ off(type: 'serviceDie', callback?: () => void): void **系统能力**:SystemCapability.DistributedHardware.DeviceManager -- 参数: +**参数:** + | 名称 | 参数类型 | 必填 | 说明 | | -------- | ----------------------- | ---- | ---------------------------------------- | | type | string | 是 | 取消注册serviceDie回调,以便在devicemanager服务异常终止时通知应用程序。 | | callback | () => void | 否 | 取消注册serviceDie的回调方法。 | -- 示例: +**示例:** + ```js try { dmInstance.off("serviceDie", () => { diff --git a/zh-cn/application-dev/reference/apis/js-apis-distributed-account.md b/zh-cn/application-dev/reference/apis/js-apis-distributed-account.md index d9e03d2412cc526c7401b0994979428f073ca95d..5d62db3f113c60af609aa15ce4aa6990fb079ab3 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-distributed-account.md +++ b/zh-cn/application-dev/reference/apis/js-apis-distributed-account.md @@ -7,7 +7,7 @@ ## 导入模块 - + ```js import account_distributedAccount from '@ohos.account.distributedAccount'; ``` @@ -40,7 +40,7 @@ getDistributedAccountAbility(): DistributedAccountAbility getOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): void -获取分布式帐号信息,使用callback回调异步返回结果。 +获取分布式帐号信息,使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount @@ -50,7 +50,15 @@ getOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): voi | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | 是 | 获取分布式帐号信息的回调。 | + | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | 是 | 回调参数。当获取分布式帐号信息成功,err为undefined,data为获取到的分布式帐号信息对象;否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 201 | permission denied. | + | 401 | the parameter check failed. | + | 12300001 | system service exception. | **示例:** ```js @@ -70,7 +78,7 @@ getOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): voi getOsAccountDistributedInfo(): Promise<DistributedInfo> -获取分布式帐号信息,使用Promise方式异步返回结果。 +获取分布式帐号信息。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount @@ -80,7 +88,15 @@ getOsAccountDistributedInfo(): Promise<DistributedInfo> | 类型 | 说明 | | -------- | -------- | - | Promise<[DistributedInfo](#distributedinfo)> | Promise实例,用于获取异步返回结果。 | + | Promise<[DistributedInfo](#distributedinfo)> | Promise对象。返回分布式帐号信息对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 201 | permission denied. | + | 401 | the parameter check failed. | + | 12300001 | system service exception. | **示例:** ```js @@ -100,7 +116,7 @@ getOsAccountDistributedInfo(): Promise<DistributedInfo> queryOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): void -获取分布式帐号信息,使用callback回调异步返回结果。 +获取分布式帐号信息。使用callback异步回调。 > **说明:** 从API version 9开始废弃,建议使用[getOsAccountDistributedInfo](#getosaccountdistributedinfo9) > > 从 API version 7开始支持。 @@ -113,7 +129,7 @@ queryOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): v | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | - | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | 是 | 获取分布式帐号信息的回调。 | + | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | 是 | 回调函数。当获取分布式帐号信息成功,err为undefined,data为获取到的分布式帐号信息对象;否则为错误对象。 | **示例:** ```js @@ -129,7 +145,7 @@ queryOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): v queryOsAccountDistributedInfo(): Promise<DistributedInfo> -获取分布式帐号信息,使用Promise方式异步返回结果。 +获取分布式帐号信息。使用Promise异步回调。 > **说明:** 从API version 9开始废弃,建议使用[getOsAccountDistributedInfo](#getosaccountdistributedinfo9-1) > > 从 API version 7开始支持。 @@ -142,7 +158,7 @@ queryOsAccountDistributedInfo(): Promise<DistributedInfo> | 类型 | 说明 | | -------- | -------- | - | Promise<[DistributedInfo](#distributedinfo)> | Promise实例,用于获取异步返回结果。 | + | Promise<[DistributedInfo](#distributedinfo)> | Promise对象。返回分布式帐号信息对象。 | **示例:** ```js @@ -159,7 +175,7 @@ queryOsAccountDistributedInfo(): Promise<DistributedInfo> setOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallback<void>): void -更新分布式帐号信息,使用callback回调异步返回结果。 +更新分布式帐号信息。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount @@ -170,7 +186,16 @@ setOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallbac | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | accountInfo | [DistributedInfo](#distributedinfo) | 是 | 分布式帐号信息。 | - | callback | AsyncCallback<void> | 是 | 更新分布式帐号信息的回调。 | + | callback | AsyncCallback<void> | 是 | 回调函数。当更新分布式帐号信息成功时,err为undefined,否则为错误对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 201 | permission denied. | + | 401 | the parameter check failed. | + | 12300001 | system service exception. | + | 12300002 | invalid accountInfo. | **示例:** ```js @@ -189,7 +214,7 @@ setOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallbac setOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> -更新分布式帐号信息,使用Promise方式异步返回结果。 +更新分布式帐号信息。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount @@ -205,7 +230,16 @@ setOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> | 类型 | 说明 | | -------- | -------- | - | Promise<void> | Promise实例,用于获取异步返回结果。 | + | Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + + | 错误码ID | 错误信息| + | ------- | -------| + | 201 | permission denied. | + | 401 | the parameter check failed. | + | 12300001 | system service exception. | + | 12300002 | invalid accountInfo. | **示例:** ```js @@ -225,7 +259,7 @@ setOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> updateOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallback<void>): void -更新分布式帐号信息,使用callback回调异步返回结果。 +更新分布式帐号信息。使用callback异步回调。 > **说明:** 从API version 9开始废弃,建议使用[setOsAccountDistributedInfo](#setosaccountdistributedinfo9) > > 从 API version 7开始支持。 @@ -239,7 +273,7 @@ updateOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCall | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | accountInfo | [DistributedInfo](#distributedinfo) | 是 | 分布式帐号信息。 | - | callback | AsyncCallback<void> | 是 | 更新分布式帐号信息的回调。 | + | callback | AsyncCallback<void> | 是 | 回调函数。当更新分布式帐号信息成功时,err为undefined,否则为错误对象。 | **示例:** ```js @@ -254,7 +288,7 @@ updateOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCall updateOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> -更新分布式帐号信息,使用Promise方式异步返回结果。 +更新分布式帐号信息。使用Promise异步回调。 > **说明:** 从API version 9开始废弃,建议使用[setOsAccountDistributedInfo](#setosaccountdistributedinfo9-1) > > 从 API version 7开始支持。 @@ -272,7 +306,7 @@ updateOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> | 类型 | 说明 | | -------- | -------- | - | Promise<void> | Promise实例,用于获取异步返回结果。 | + | Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js diff --git a/zh-cn/application-dev/reference/apis/js-apis-distributedMissionManager.md b/zh-cn/application-dev/reference/apis/js-apis-distributedMissionManager.md index 28e346734f8157fcd47ddbd815f089bf52baaa5f..589acab75c3572a816b91095edeac82ed06fb051 100755 --- a/zh-cn/application-dev/reference/apis/js-apis-distributedMissionManager.md +++ b/zh-cn/application-dev/reference/apis/js-apis-distributedMissionManager.md @@ -48,7 +48,7 @@ registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback, console.log('NotifyNetDisconnect state ' + JSON.stringify(state)); } var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; var options = { notifyMissionsChanged: NotifyMissionsChanged, @@ -104,7 +104,7 @@ registerMissionListener(parameter: MissionDeviceInfo, options: MissionCallback): console.log('NotifyNetDisconnect state ' + JSON.stringify(state)); } var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; var options = { notifyMissionsChanged: NotifyMissionsChanged, @@ -145,7 +145,7 @@ unRegisterMissionListener(parameter: MissionDeviceInfo, callback: AsyncCallback& ```ts var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; try { distributedMissionManager.unRegisterMissionListener(parameter, (error) => { @@ -186,7 +186,7 @@ unRegisterMissionListener(parameter: MissionDeviceInfo): Promise<void> ```ts var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; try { distributedMissionManager.unRegisterMissionListener(parameter) @@ -221,7 +221,7 @@ startSyncRemoteMissions(parameter: MissionParameter, callback: AsyncCallback< ```ts var parameter = { - deviceId: remoteDeviceId, + deviceId: "", fixConflict: false, tag: 0 }; @@ -263,7 +263,7 @@ startSyncRemoteMissions(parameter: MissionParameter): Promise<void> ```ts var parameter = { - deviceId: remoteDeviceId, + deviceId: "", fixConflict: false, tag: 0 }; @@ -300,7 +300,7 @@ stopSyncRemoteMissions(parameter: MissionDeviceInfo, callback: AsyncCallback< ```ts var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; try { distributedMissionManager.stopSyncRemoteMissions(parameter, (error) => { @@ -340,7 +340,7 @@ stopSyncRemoteMissions(parameter: MissionDeviceInfo): Promise<void> ```ts var parameter = { - deviceId: remoteDeviceId + deviceId: "" }; try { distributedMissionManager.stopSyncRemoteMissions(parameter) @@ -376,10 +376,10 @@ continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback, callba ```ts var parameter = { - srcDeviceId: localDeviceId, - dstDeviceId: remoteDeviceId, - missionId: remoteMissionId, - wantParams: {"key": "value"} + srcDeviceId: "", + dstDeviceId: "", + missionId: 1, + wantParam: {"key": "value"} }; function OnContinueDone(resultCode) { console.log('OnContinueDone resultCode: ' + JSON.stringify(resultCode)); @@ -426,10 +426,10 @@ continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promi ```ts var parameter = { - srcDeviceId: localDeviceId, - dstDeviceId: remoteDeviceId, - missionId: remoteMissionId, - wantParams: {"key": "value"} + srcDeviceId: "", + dstDeviceId: "", + missionId: 1, + wantParam: {"key": "value"} }; function OnContinueDone(resultCode) { console.log('OnContinueDone resultCode: ' + JSON.stringify(resultCode)); @@ -501,8 +501,8 @@ continueMission(parameter: ContinueDeviceInfo, options: ContinueCallback): Promi | -------- | ------ | ---- | ---- | ------- | | srcDeviceId | string | 是 | 是 | 表示任务迁移源设备ID。 | | dstDeviceId | string | 是 | 是 | 表示任务迁移目标设备ID。 | -| missionId | string | 是 | 是 | 表示任务ID。 | -| wantParams | {[key: string]: any} | 是 | 是 | 表示扩展参数。 | +| missionId | number | 是 | 是 | 表示任务ID。 | +| wantParam | {[key: string]: any} | 是 | 是 | 表示扩展参数。 | ## ContinueCallback diff --git a/zh-cn/application-dev/reference/apis/js-apis-hiappevent.md b/zh-cn/application-dev/reference/apis/js-apis-hiappevent.md index b2aa4eead87307c8f41758558d1f6c851dfabe67..390623519f0c1ce48914d21867c28effcbb67a07 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-hiappevent.md +++ b/zh-cn/application-dev/reference/apis/js-apis-hiappevent.md @@ -3,7 +3,7 @@ 本模块提供了应用事件打点能力,包括对打点数据的落盘,以及对打点功能的管理配置。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** -> - 本模块接口从API version 9开始废弃,建议使用新接口[@ohos.hiviewdfx.hiAppEvent](js-apis-hiviewdfx-hiappevent)替代。 +> - 本模块接口从API version 9开始废弃,建议使用新接口[@ohos.hiviewdfx.hiAppEvent](js-apis-hiviewdfx-hiappevent.md)替代。 > - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-hichecker.md b/zh-cn/application-dev/reference/apis/js-apis-hichecker.md index 7184fe39bc326ad85a0587dbe5514cecbaf1dbbf..e313f50d33679e7324a72ef46aef7ae53badf860 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-hichecker.md +++ b/zh-cn/application-dev/reference/apis/js-apis-hichecker.md @@ -26,11 +26,103 @@ import hichecker from '@ohos.hichecker'; | RULE_THREAD_CHECK_SLOW_PROCESS | bigint | 检测规则,检测是否有耗时函数被调用。 | | RULE_CHECK_ABILITY_CONNECTION_LEAK | bigint | 检测规则,检测是否发生ability泄露。 | +## hichecker.addCheckRule9+ -## hichecker.addRule +addCheckRule(rule: bigint): void + +添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。 + +**系统能力:** SystemCapability.HiviewDFX.HiChecker + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------- | +| rule | bigint | 是 | 需要添加的规则。 | + +**示例:** + +```js +try { + // 添加一条规则 + hichecker.addCheckRule(hichecker.RULE_CAUTION_PRINT_LOG);} + // 添加多条规则 + hichecker.addCheckRule( + hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); +catch (err) { + console.error(`code: ${err.code}, message: ${err.message}`); +} +``` + +## hichecker.removeCheckRule9+ + +removeCheckRule(rule: bigint): void + +删除一条或多条规则,删除的规则后续将不再生效。 + +**系统能力:** SystemCapability.HiviewDFX.HiChecker + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------- | +| rule | bigint | 是 | 需要删除的规则。 | + +**示例:** + +```js +try { + // 删除一条规则 + hichecker.removeCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); + // 删除多条规则 + hichecker.removeCheckRule( + hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); +catch (err) { + console.error(`code: ${err.code}, message: ${err.message}`); +} +``` + +## hichecker.containsCheckRule9+ + +containsCheckRule(rule: bigint): boolean + +当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。 + +**系统能力:** SystemCapability.HiviewDFX.HiChecker + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------- | +| rule | bigint | 是 | 需要查询的规则。 | + +**返回值:** + +| 类型 | 说明 | +| ------- | ---------------------------------------------------------- | +| boolean | 查询结果,true 表示规则已添加,false 表示规则未添加。 | + +**示例:** + +```js +try { + // 添加一条规则 + hichecker.addCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); + + // 查询是否包含 + hichecker.containsCheckRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); // return true; + hichecker.containsCheckRule(hichecker.RULE_CAUTION_PRINT_LOG); // return false; +catch (err) { + console.error(`code: ${err.code}, message: ${err.message}`); +} +``` + +## hichecker.addRule(deprecated) addRule(rule: bigint): void +> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.addCheckRule](#hicheckeraddcheckrule9)替代。 + 添加一条或多条规则到系统,系统根据添加的规则进行检测或反馈。 **系统能力:** SystemCapability.HiviewDFX.HiChecker @@ -52,10 +144,12 @@ hichecker.addRule( hichecker.RULE_CAUTION_PRINT_LOG | hichecker.RULE_CAUTION_TRIGGER_CRASH); ``` -## hichecker.removeRule +## hichecker.removeRule(deprecated) removeRule(rule: bigint): void +> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.removeCheckRule](#hicheckerremovecheckrule9)替代。 + 删除一条或多条规则,删除的规则后续将不再生效。 **系统能力:** SystemCapability.HiviewDFX.HiChecker @@ -101,10 +195,12 @@ hichecker.addRule(hichecker.RULE_THREAD_CHECK_SLOW_PROCESS); hichecker.getRule(); // return 1n; ``` -## hichecker.contains +## hichecker.contains(deprecated) contains(rule: bigint): boolean +> **说明:** 从 API Version 9 开始废弃,建议使用[hichecker.containsCheckRule](#hicheckercontainscheckrule9)替代。 + 当前已添加的规则集中是否包含了某一个特定的规则,如果传入的规则级别为线程级别,则仅在当前线程中进行查询。 **系统能力:** SystemCapability.HiviewDFX.HiChecker diff --git a/zh-cn/application-dev/reference/apis/js-apis-hidebug.md b/zh-cn/application-dev/reference/apis/js-apis-hidebug.md index d6bdbe5f37e074f8f5cb1611ae8ea5454de65eb9..2d81b2b7faef6ee269588dcadf9889bf59ce6da2 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-hidebug.md +++ b/zh-cn/application-dev/reference/apis/js-apis-hidebug.md @@ -162,10 +162,12 @@ getCpuUsage(): number let cpuUsage = hidebug.getCpuUsage(); ``` -## hidebug.startProfiling +## hidebug.startProfiling(deprecated) startProfiling(filename : string) : void +> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.startJsCpuProfiling](#hidebugstartjscpuprofiling9)替代。 + 启动虚拟机Profiling方法跟踪,`startProfiling()`方法的调用需要与`stopProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 **系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug @@ -188,10 +190,12 @@ hidebug.stopProfiling(); -## hidebug.stopProfiling +## hidebug.stopProfiling(deprecated) stopProfiling() : void +> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.stopJsCpuProfiling](#hidebugstopjscpuprofiling9)替代。 + 停止虚拟机Profiling方法跟踪,`stopProfiling()`方法的调用需要与`startProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 **系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug @@ -206,10 +210,12 @@ hidebug.startProfiling("cpuprofiler-20220216"); hidebug.stopProfiling(); ``` -## hidebug.dumpHeapData +## hidebug.dumpHeapData(deprecated) dumpHeapData(filename : string) : void +> **说明:** 从 API Version 9 开始废弃,建议使用[hidebug.dumpJsHeapData](#hidebugdumpjsheapdata9)替代。 + 虚拟机堆导出。 **系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug @@ -228,11 +234,11 @@ hidebug.dumpHeapData("heap-20220216"); ## hidebug.getServiceDump9+ -getServiceDump(serviceid : number) : string +getServiceDump(serviceid : number, fd : number, args : Array) : void 获取系统服务信息。 -此接口为系统接口,三方应用不可用。 +**需要权限**: ohos.permission.DUMP **系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug @@ -241,16 +247,115 @@ getServiceDump(serviceid : number) : string | 参数名 | 类型 | 必填 | 说明 | | -------- | ------ | ---- | ------------------------------------------------------------ | | serviceid | number | 是 | 基于该用户输入的service id获取系统服务信息。| +| fd | number | 是 | 文件描述符,该接口会往该fd中写入数据。| +| args | Array | 是 | 系统服务的Dump接口所对应的参数列表。| -**返回值:** -| 类型 | 说明 | -| ------ | -------------------------- | -| string | 返回dump的service信息文件的绝对路径。 | +**示例:** + +```js +import fileio from '@ohos.fileio' +import hidebug from '@ohos.hidebug' +import featureAbility from '@ohos.ability.featureAbility' + +let context = featureAbility.getContext(); +context.getFilesDir().then((data) => { + var path = data + "/serviceInfo.txt" + console.info("output path: " + path) + let fd = fileio.openSync(path, 0o102, 0o666) + var serviceId = 10 + var args = new Array("allInfo") + try { + hidebug.getServiceDump(serviceId, fd, args) + } catch (error) { + console.info(error.code) + console.info(error.message) + } + fileio.closeSync(fd); +}) +``` + +## hidebug.startJsCpuProfiling9+ + +startJsCpuProfiling(filename : string) : void + +启动虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 + +**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------------------------------------------------------ | +| filename | string | 是 | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 | + +**示例:** + +```js +import hidebug from '@ohos.hidebug' + +try { + hidebug.startJsCpuProfiling("cpu_profiling"); + ... + hidebug.stopJsCpuProfiling(); +} catch (error) { + console.info(error.code) + console.info(error.message) +} +``` + +## hidebug.stopJsCpuProfiling9+ + +stopJsCpuProfiling() : void + +停止虚拟机Profiling方法跟踪,`startJsCpuProfiling()`方法的调用需要与`stopJsCpuProfiling()`方法的调用一一对应,先开启后关闭,严禁使用`start->start->stop`,`start->stop->stop`,`start->start->stop->stop`等类似的顺序调用。 + +**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------------------------------------------------------ | +| filename | string | 是 | 用户自定义的profiling文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.json`文件。 | + +**示例:** + +```js +import hidebug from '@ohos.hidebug' + +try { + hidebug.startJsCpuProfiling("cpu_profiling"); + ... + hidebug.stopJsCpuProfiling(); +} catch (error) { + console.info(error.code) + console.info(error.message) +} +``` + +## hidebug.dumpJsHeapData9+ + +dumpJsHeapData(filename : string) : void + +虚拟机堆导出。 + +**系统能力:** SystemCapability.HiviewDFX.HiProfiler.HiDebug + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------ | ---- | ------------------------------------------------------------ | +| filename | string | 是 | 用户自定义的虚拟机堆文件名,根据传入的`filename`,将在应用的`files`目录生成`filename.heapsnapshot`文件。 | **示例:** ```js -let serviceId = 10; -let pathName = hidebug.getServiceDump(serviceId); +import hidebug from '@ohos.hidebug' + +try { + hidebug.dumpJsHeapData("heapData"); +} catch (error) { + console.info(error.code) + console.info(error.message) +} ``` \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-hisysevent.md b/zh-cn/application-dev/reference/apis/js-apis-hisysevent.md index 1895a0eb1687b281cd3f8fe211f26f850f284f9d..94dd6d732addadbf1f5757c5bc5e6c56bd304de8 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-hisysevent.md +++ b/zh-cn/application-dev/reference/apis/js-apis-hisysevent.md @@ -55,6 +55,21 @@ write(info: SysEventInfo, callback: AsyncCallback<void>): void | info | [SysEventInfo](#syseventinfo) | 是 | 系统事件。 | | callback | AsyncCallback<void> | 是 | 回调函数,可以在回调函数中处理接口返回值。
- 0表示事件校验成功,事件正常异步写入事件文件;
- 正值表示事件打点存在异常,但可以正常写入;
- 负值表示事件打点失败。 | +**错误码:** + +以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)。 + +| 错误码ID | 错误信息 | +| ------- | ----------------------------------------------------------------- | +| 11200001 | Invalid event domain. | +| 11200002 | Invalid event name. | +| 11200003 | Abnormal environment. | +| 11200004 | Length of the event is over limit. | +| 11200051 | Invalid event parameter. | +| 11200052 | Size of the event parameter of the string type is over limit. | +| 11200053 | Count of event parameters is over limit. | +| 11200054 | Count of event parameter of the array type is over limit. | + **示例:** ```js @@ -101,6 +116,21 @@ write(info: SysEventInfo): Promise<void> | ------------------- | ------------------------------------------------------------ | | Promise<void> | Promise实例,可以在其then()、catch()方法中分别对系统事件写入成功、写入异常的回调进行处理。 | +**错误码:** + +以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)。 + +| 错误码ID | 错误信息 | +| -------- | ---------------------------------------------------------------- | +| 11200001 | Invalid event domain. | +| 11200002 | Invalid event name. | +| 11200003 | Abnormal environment. | +| 11200004 | Length of the event is over limit. | +| 11200051 | Invalid event parameter. | +| 11200052 | Size of the event parameter of the string type is over limit. | +| 11200053 | Count of event parameters is over limit. | +| 11200054 | Count of event parameter of the array type is over limit. | + **示例:** ```js @@ -171,7 +201,7 @@ try { ## hiSysEvent.addWatcher -addWatcher(watcher: Watcher): number +addWatcher(watcher: Watcher): void 订阅系统事件,接收[Watcher](#watcher)类型的对象作为事件参数。 @@ -185,6 +215,15 @@ addWatcher(watcher: Watcher): number | ------ | ----------------------------- | ---- | ------------------------ | | watcher | [Watcher](#watcher) | 是 | 系统事件订阅者对象。 | +**错误码:** + +以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)。 + +| 错误码ID | 错误信息 | +| -------- | ----------------------------------- | +| 11200101 | Count of watchers is over limit. | +| 11200102 | Count of watch rules is over limit. | + **示例:** ```js @@ -213,7 +252,7 @@ try { ## hiSysEvent.removeWatcher -removeWatcher(watcher: Watcher): number +removeWatcher(watcher: Watcher): void 取消订阅系统事件,接收[Watcher](#watcher)类型的对象作为事件参数。 @@ -224,9 +263,17 @@ removeWatcher(watcher: Watcher): number **参数:** | 参数名 | 类型 | 必填 | 说明 | -| ------ | ------------- | ---- | ------------------------ | +| ------ | ------------- | ---- | ------------------------- | | watcher | [Watcher](#watcher) | 是 | 系统事件订阅者对象。 | +**错误码:** + +以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)。 + +| 错误码ID | 错误信息 | +| -------- | --------------------------- | +| 11200201 | The watcher does not exist. | + **示例:** ```js @@ -247,7 +294,7 @@ let watcher = { } } try { - let ret = hiSysEvent.addWatcher(watcher) + hiSysEvent.addWatcher(watcher) hiSysEvent.removeWatcher(watcher) } catch (error) { console.error(`error code: ${error.code}, error msg: ${error.message}`); @@ -290,7 +337,7 @@ try { ## hiSysEvent.query -query(queryArg: QueryArg, rules: QueryRule[], querier: Querier): number +query(queryArg: QueryArg, rules: QueryRule[], querier: Querier): void 查询系统事件。 @@ -306,6 +353,17 @@ query(queryArg: QueryArg, rules: QueryRule[], querier: Querier): number | rules | [QueryRule](#queryrule)[] | 是 | 查询规则数组,每次查询可配置多个查询规则。 | | querier | [Querier](#querier) | 是 | 查询者对象,包含查询结果及结束的相关回调。 | +**错误码:** + +以下错误码的详细介绍请参见[系统事件错误码](../errorcodes/errorcode-hisysevent.md)。 + +| 错误码ID | 错误信息 | +| -------- | ------------------------------------------- | +| 11200301 | Count of query rules is over limit. | +| 11200302 | Invalid query rule. | +| 11200303 | Count of concurrent queriers is over limit. | +| 11200304 | Query frequency is over limit. | + **示例:** ```js diff --git a/zh-cn/application-dev/reference/apis/js-apis-hiviewdfx-hiappevent.md b/zh-cn/application-dev/reference/apis/js-apis-hiviewdfx-hiappevent.md index f3dd2e21bc90b44260d70f6d7954bf08136b142a..ed292c7470817d3eabed6dd4715f6cf07a06bd7b 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-hiviewdfx-hiappevent.md +++ b/zh-cn/application-dev/reference/apis/js-apis-hiviewdfx-hiappevent.md @@ -12,22 +12,6 @@ import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent'; ``` -## 使用说明 - -开发者在使用应用事件打点功能前,需要首先了解应用事件相关的使用规格。 - -**事件打点回调** - -开发者在调用事件打点方法时,可以在回调函数中对打点结果进行处理,当前支持callback形式和Promise形式的回调。 - -**事件订阅回调** - -开发者在调用事件订阅方法时,可以在订阅回调函数中对订阅数据进行处理,其入参定义如下: - -- curRow:返回的订阅事件数量; -- curSize:返回的订阅事件数据大小,单位为byte; -- holder:返回的订阅事件数据持有者,可以通过其对订阅事件进行处理。 - ## hiAppEvent.write write(info: [AppEventInfo](#appeventinfo), callback: AsyncCallback<void>): void @@ -41,7 +25,7 @@ write(info: [AppEventInfo](#appeventinfo), callback: AsyncCallback<void>): | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------ | ---- | -------------- | | info | [AppEventInfo](#appeventinfo) | 是 | 应用事件对象。 | -| callback | AsyncCallback<void> | 否 | 事件回调函数。 | +| callback | AsyncCallback<void> | 是 | 打点回调函数。 | **错误码:** @@ -93,9 +77,9 @@ write(info: [AppEventInfo](#appeventinfo)): Promise<void> **返回值:** -| 类型 | 说明 | -| ------------------- | ------------------------------------------------------------ | -| Promise<void> | Promise对象,可以在其then()、catch()方法中分别对事件写入成功、写入异常的情况进行异步处理。 | +| 类型 | 说明 | +| ------------------- | ------------- | +| Promise<void> | Promise对象。 | **错误码:** @@ -144,9 +128,9 @@ hiAppEvent.write({ ## hiAppEvent.configure -configure(config: ConfigOption): void +configure(config: [ConfigOption](configoption)): void -应用事件打点配置方法,可用于配置打点开关、文件目录存储限额大小等功能。 +应用事件打点配置方法,可用于配置打点开关、目录存储配额大小等功能。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent @@ -167,12 +151,12 @@ configure(config: ConfigOption): void **示例:** ```js -// 配置应用事件打点功能开关 +// 配置打点开关为关闭状态 hiAppEvent.configure({ disable: true }); -// 配置事件文件目录存储限额大小 +// 配置文件目录存储配额为100M hiAppEvent.configure({ maxStorage: '100M' }); @@ -180,20 +164,20 @@ hiAppEvent.configure({ ## ConfigOption -此接口提供了应用事件打点的配置选项。 +此接口提供了对应用事件打点功能的配置选项。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ------------------------------------------------------------ | -| disable | boolean | 否 | 应用事件打点功能开关。配置值为true表示关闭打点功能,false表示不关闭打点功能。 | -| maxStorage | string | 否 | 打点数据本地存储文件所在目录的配额大小,默认限额为“10M”。所在目录大小超出限额后会对目录进行清理操作,会按从旧到新的顺序逐个删除打点数据文件,直到目录大小不超出限额时停止。 | +| disable | boolean | 否 | 打点功能开关,默认值为false。true:关闭打点功能,false:不关闭打点功能。 | +| maxStorage | string | 否 | 打点数据存放目录的配额大小,默认值为“10M”。
在目录大小超出配额后,下次打点会触发对目录的清理操作:按从旧到新的顺序逐个删除打点数据文件,直到目录大小不超出配额时结束。 | ## hiAppEvent.addWatcher addWatcher(watcher: [Watcher](#watcher)): [AppEventPackageHolder](#appeventpackageholder) -添加应用事件订阅者。 +添加应用事件观察者方法,可用于订阅应用事件。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent @@ -201,7 +185,7 @@ addWatcher(watcher: [Watcher](#watcher)): [AppEventPackageHolder](#appeventpacka | 参数名 | 类型 | 必填 | 说明 | | ------- | -------------------- | ---- | ---------------- | -| watcher | [Watcher](#watcher) | 是 | 应用事件订阅者。 | +| watcher | [Watcher](#watcher) | 是 | 应用事件观察者。 | **返回值:** @@ -224,12 +208,12 @@ addWatcher(watcher: [Watcher](#watcher)): [AppEventPackageHolder](#appeventpacka **示例:** ```js -// 1. 如果订阅者传入了回调的相关参数,则可以选择在自动触发的回调函数中对订阅事件进行处理 +// 1. 如果观察者传入了回调的相关参数,则可以选择在自动触发的回调函数中对订阅事件进行处理 hiAppEvent.addWatcher({ name: "watcher1", appEventFilters: [ { - domain: "domain_test1", + domain: "test_domain", eventTypes: [hiAppEvent.EventType.FAULT, hiAppEvent.EventType.BEHAVIOR] } ], @@ -255,7 +239,7 @@ hiAppEvent.addWatcher({ } }); -// 2. 如果订阅者未传入回调的相关参数,则可以选择使用返回的holder对象手动去处理订阅事件 +// 2. 如果观察者未传入回调的相关参数,则可以选择使用返回的holder对象手动去处理订阅事件 let holder = hiAppEvent.addWatcher({ name: "watcher2", }); @@ -276,7 +260,7 @@ if (holder != null) { removeWatcher(watcher: [Watcher](#watcher)): void -移除应用事件订阅者。 +移除应用事件观察者方法,可用于取消订阅应用事件。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent @@ -284,7 +268,7 @@ removeWatcher(watcher: [Watcher](#watcher)): void | 参数名 | 类型 | 必填 | 说明 | | ------- | -------------------- | ---- | ---------------- | -| watcher | [Watcher](#watcher) | 是 | 应用事件订阅者。 | +| watcher | [Watcher](#watcher) | 是 | 应用事件观察者。 | **错误码:** @@ -297,46 +281,46 @@ removeWatcher(watcher: [Watcher](#watcher)): void **示例:** ```js -// 1. 定义一个应用事件订阅者 +// 1. 定义一个应用事件观察者 let watcher = { name: "watcher1", } -// 2. 开始订阅事件 +// 2. 添加一个应用事件观察者来订阅事件 hiAppEvent.addWatcher(watcher); -// 3. 取消订阅事件 +// 3. 移除该应用事件观察者以取消订阅事件 hiAppEvent.removeWatcher(watcher); ``` ## Watcher -此接口提供了应用事件订阅者的参数选项。 +此接口提供了应用事件观察者的参数选项。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent -| 名称 | 参数类型 | 必填 | 说明 | -| ---------------- | ------------------------------------------------------------ | ---- | -------------------------------- | -| name | string | 是 | 订阅者名称,用于唯一标识订阅者。 | -| triggerCondition | [TriggerCondition](#triggercondition) | 否 | 订阅回调触发条件。 | -| appEventFilters | [AppEventFilter](#appeventfilter)[] | 否 | 订阅过滤条件。 | -| onTrigger | (curRow: number, curSize: number, holder: [AppEventPackageHolder](#appeventpackageholder)) => void | 否 | 订阅回调函数 。 | +| 名称 | 参数类型 | 必填 | 说明 | +| ---------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | +| name | string | 是 | 观察者名称,用于唯一标识观察者。 | +| triggerCondition | [TriggerCondition](#triggercondition) | 否 | 订阅回调触发条件,需要与回调函数一同传入才会生效。 | +| appEventFilters | [AppEventFilter](#appeventfilter)[] | 否 | 订阅过滤条件,在需要对订阅事件进行过滤时传入。 | +| onTrigger | (curRow: number, curSize: number, holder: [AppEventPackageHolder](#appeventpackageholder)) => void | 否 | 订阅回调函数,需要与回调触发条件一同传入才会生效,函数入参说明如下:
curRow:在本次回调触发时的订阅事件总数量;
curSize:在本次回调触发时的订阅事件总大小,单位为byte;
holder:订阅数据持有者对象,可以通过其对订阅事件进行处理。 | ## TriggerCondition -此接口提供了订阅者回调触发条件的参数选项。 +此接口提供了回调触发条件的参数选项,只要满足任一条件就会触发订阅回调。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent | 名称 | 参数类型 | 必填 | 说明 | | ------- | -------- | ---- | -------------------------------------- | -| row | number | 否 | 满足触发回调的事件总数。 | +| row | number | 否 | 满足触发回调的事件总数量。 | | size | number | 否 | 满足触发回调的事件总大小,单位为byte。 | -| timeOut | number | 否 | 满足触发回调的定时时长,单位为30s。 | +| timeOut | number | 否 | 满足触发回调的超时时长,单位为30s。 | ## AppEventFilter -此接口提供了订阅者过滤应用事件的参数选项。 +此接口提供了过滤应用事件的参数选项。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent @@ -353,12 +337,18 @@ hiAppEvent.removeWatcher(watcher); ### constructor -constructor(watcherName: string); +constructor(watcherName: string) -类构造函数,在添加订阅时会被系统自动调用来创建一个订阅数据持有者对象并返回给开发者。 +类构造函数,在添加应用事件观察者时,会由系统自动调用来创建一个该观察者对应的订阅数据持有者对象,并返回给开发者。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------- | ---- | ------------------------ | +| watcherName | string | 是 | 观察者名称。 | + **示例:** ```js @@ -371,10 +361,16 @@ let holder = hiAppEvent.addWatcher({ setSize(size: number): void -设置每次取出的应用事件包的数据大小阈值,单位为byte,默认值为512*1024。 +设置每次取出的应用事件包的数据大小阈值。 **系统能力:** SystemCapability.HiviewDFX.HiAppEvent +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | -------------------------------------------- | +| size | number | 是 | 数据大小阈值,单位为byte,默认值为512*1024。 | + **错误码:** 以下错误码的详细介绍请参见[应用事件打点错误码](../errorcodes/errcode-hiviewdfx-hiappevent.md)。 @@ -419,7 +415,7 @@ let eventPkg = holder.takeNext(); | --------- | -------- | ------------------------------ | | packageId | number | 事件包ID,从0开始自动递增。 | | row | number | 事件包的事件数量。 | -| size | number | 事件包的数据大小,单位为byte。 | +| size | number | 事件包的事件大小,单位为byte。 | | data | string[] | 事件包的事件信息。 | ## hiAppEvent.clearData diff --git a/zh-cn/application-dev/reference/apis/js-apis-huks.md b/zh-cn/application-dev/reference/apis/js-apis-huks.md index 219434083c5c0d52ff918258d8529b5f35297d40..ee703cf1686bba0bef5f11d287da62e6cc9b02e6 100755 --- a/zh-cn/application-dev/reference/apis/js-apis-huks.md +++ b/zh-cn/application-dev/reference/apis/js-apis-huks.md @@ -12,2220 +12,2467 @@ HUKS所管理的密钥可以由应用导入或者由应用调用HUKS接口生成 ```js import huks from '@ohos.security.huks' ``` -## HuksErrorCode(deprecated) -表示错误码的枚举。 +## HuksParam -**系统能力**:SystemCapability.Security.Huks +调用接口使用的options中的properties数组中的param。 -| 名称 | 值 | 说明 | -| -------------------------- | ----- | ---- | -| HUKS_SUCCESS | 0 |表示成功。| -| HUKS_FAILURE | -1 |表示失败。| -| HUKS_ERROR_BAD_STATE | -2 |表示错误的状态。| -| HUKS_ERROR_INVALID_ARGUMENT | -3 |表示无效的数据。| -| HUKS_ERROR_NOT_SUPPORTED | -4 |表示不支持。| -| HUKS_ERROR_NO_PERMISSION | -5 |表示没有许可。| -| HUKS_ERROR_INSUFFICIENT_DATA | -6 |表示数据不足。| -| HUKS_ERROR_BUFFER_TOO_SMALL | -7 |表示缓冲区太小。| -| HUKS_ERROR_INSUFFICIENT_MEMORY | -8 |表示内存不足。| -| HUKS_ERROR_COMMUNICATION_FAILURE | -9 |表示通讯失败。| -| HUKS_ERROR_STORAGE_FAILURE | -10 |表示存储故障。| -| HUKS_ERROR_HARDWARE_FAILURE | -11 |表示硬件故障。| -| HUKS_ERROR_ALREADY_EXISTS | -12 |表示已经存在。| -| HUKS_ERROR_NOT_EXIST | -13 |表示不存在。| -| HUKS_ERROR_NULL_POINTER | -14 |表示空指针。| -| HUKS_ERROR_FILE_SIZE_FAIL | -15 |表示文件大小失败。| -| HUKS_ERROR_READ_FILE_FAIL | -16 |表示读取文件失败。| -| HUKS_ERROR_INVALID_PUBLIC_KEY | -17 |表示无效的公钥。| -| HUKS_ERROR_INVALID_PRIVATE_KEY | -18 |表示无效的私钥。| -| HUKS_ERROR_INVALID_KEY_INFO | -19 |表示无效的密钥信息。| -| HUKS_ERROR_HASH_NOT_EQUAL | -20 |表示哈希不相等。| -| HUKS_ERROR_MALLOC_FAIL | -21 |表示MALLOC 失败。| -| HUKS_ERROR_WRITE_FILE_FAIL | -22 |表示写文件失败。| -| HUKS_ERROR_REMOVE_FILE_FAIL | -23 |表示删除文件失败。| -| HUKS_ERROR_OPEN_FILE_FAIL | -24 |表示打开文件失败。| -| HUKS_ERROR_CLOSE_FILE_FAIL | -25 |表示关闭文件失败。| -| HUKS_ERROR_MAKE_DIR_FAIL | -26 |表示创建目录失败。| -| HUKS_ERROR_INVALID_KEY_FILE | -27 |表示无效的密钥文件。| -| HUKS_ERROR_IPC_MSG_FAIL | -28 |表示IPC 信息失败。| -| HUKS_ERROR_REQUEST_OVERFLOWS | -29 |表示请求溢出。| -| HUKS_ERROR_PARAM_NOT_EXIST | -30 |表示参数不存在。| -| HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 |表示CRYPTO ENGINE错误。| -| HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 |表示通讯超时。| -| HUKS_ERROR_IPC_INIT_FAIL | -33 |表示IPC 初始化失败。| -| HUKS_ERROR_IPC_DLOPEN_FAIL | -34 |表示IPC DLOPEN 失败。| -| HUKS_ERROR_EFUSE_READ_FAIL | -35 |表示EFUSE 读取失败。| -| HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 |表示存在新的根密钥材料。| -| HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 |表示更新根密钥材料失败。| -| HUKS_ERROR_VERIFICATION_FAILED | -38 |表示验证证书链失败。| -| HUKS_ERROR_GET_USERIAM_SECINFO_FAILED9+ | -40 |表示获取当前用户安全属性信息失败。| -| HUKS_ERROR_GET_USERIAM_AUTHINFO_FAILED9+ | -41 |表示获取当前用户认证信息失败。| -| HUKS_ERROR_USER_AUTH_TYPE_NOT_SUPPORT9+ | -42 |表示不支持当前用户认证类型的访问控制。| -| HUKS_ERROR_KEY_AUTH_FAILED9+ | -43 |表示安全访问控制认证失败。| -| HUKS_ERROR_DEVICE_NO_CREDENTIAL9+ | -44 |表示设备当前未录入凭据。| -| HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 |表示检查获取 ALG 失败。| -| HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 |表示检查获取密钥大小失败。| -| HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 |表示检查获取填充失败。| -| HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 |表示检查获取目的失败。| -| HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 |表示检查获取摘要失败。| -| HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 |表示检查获取模式失败。| -| HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 |表示检查获取随机数失败。| -| HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 |表示检查获取 AAD 失败。| -| HUKS_ERROR_CHECK_GET_IV_FAIL | -108 |表示检查 GET IV 失败。| -| HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 |表示检查获取 AE 标记失败。| -| HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 |表示检查获取SALT失败。| -| HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 |表示检查获取迭代失败。| -| HUKS_ERROR_INVALID_ALGORITHM | -112 |表示无效的算法。| -| HUKS_ERROR_INVALID_KEY_SIZE | -113 |表示无效的密钥大小。| -| HUKS_ERROR_INVALID_PADDING | -114 |表示无效的填充。| -| HUKS_ERROR_INVALID_PURPOSE | -115 |表示无效的目的。| -| HUKS_ERROR_INVALID_MODE | -116 |表示无效模式。| -| HUKS_ERROR_INVALID_DIGEST | -117 |表示无效的摘要。| -| HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 |表示签名大小无效。| -| HUKS_ERROR_INVALID_IV | -119 |表示无效的 IV。| -| HUKS_ERROR_INVALID_AAD | -120 |表示无效的 AAD。| -| HUKS_ERROR_INVALID_NONCE | -121 |表示无效的随机数。| -| HUKS_ERROR_INVALID_AE_TAG | -122 |表示无效的 AE 标签。| -| HUKS_ERROR_INVALID_SALT | -123 |表示无效SALT。| -| HUKS_ERROR_INVALID_ITERATION | -124 |表示无效的迭代。| -| HUKS_ERROR_INVALID_OPERATION | -125 |表示无效操作。| -| HUKS_ERROR_INVALID_WRAPPED_FORMAT9+ | -126 |表示导入加密密钥时,密钥格式错误。| -| HUKS_ERROR_INVALID_USAGE_OF_KEY9+ | -127 |表示导入加密密钥时,密钥用途错误。| -| HUKS_ERROR_INTERNAL_ERROR | -999 |表示内部错误。| -| HUKS_ERROR_UNKNOWN_ERROR | -1000 |表示未知错误。| +**系统能力**:SystemCapability.Security.Huks -## HuksExceptionErrCode9+ +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------------------------- | ---- | ------------ | +| tag | [HuksTag](#hukstag) | 是 | 标签。 | +| value | boolean\|number\|bigint\|Uint8Array | 是 | 标签对应值。 | -表示错误码的枚举以及对应的错误信息, 错误码表示错误类型,错误信息展示错误详情。 +## HuksOptions -关于错误码的具体信息,可在[错误码参考文档](../errorcodes/errorcode-huks.md)中查看。 +调用接口使用的options。 **系统能力**:SystemCapability.Security.Huks -| 类型 | 名称 | 说明 | 错误码 | -| ------------------------- | ---------------------------------------------- | --------------------------- | -------- | -| 权限 | HUKS_ERR_CODE_PERMISSION_FAIL | 权限错误导致失败。 | 201 | -| 参数 | HUKS_ERR_CODE_ILLEGAL_ARGUMENT | 参数错误导致失败。 | 401 | -| 不支持的API | HUKS_ERR_CODE_NOT_SUPPORTED_API | 不支持的API。 | 801 | -| 不支持的功能/特性 | HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED | 不支持的功能/特性。 | 12000001 | -| 缺少密钥算法参数 | HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT | 缺少密钥算法参数。 | 12000002 | -| 无效密钥算法参数 | HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT | 无效密钥算法参数。 | 12000003 | -| 文件 | HUKS_ERR_CODE_FILE_OPERATION_FAIL | 文件操作失败。 | 12000004 | -| 通信 | HUKS_ERR_CODE_COMMUNICATION_FAIL | 通信失败。 | 12000005 | -| 算法库操作失败 | HUKS_ERR_CODE_CRYPTO_FAIL | 算法库操作失败。 | 12000006 | -| 密钥访问失败-密钥访问失效 | HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED | 密钥访问失败-密钥访问失效。 | 12000007 | -| 密钥访问失败-密钥认证失败 | HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED | 密钥访问失败-密钥认证失败。 | 12000008 | -| 密钥访问失败-密钥访问超时 | HUKS_ERR_CODE_KEY_AUTH_TIME_OUT | 密钥访问失败-密钥访问超时。 | 12000009 | -| 密钥操作会话数已达上限 | HUKS_ERR_CODE_SESSION_LIMIT | 密钥操作会话数已达上限。 | 12000010 | -| 目标对象不存在 | HUKS_ERR_CODE_ITEM_NOT_EXIST | 目标对象不存在。 | 12000011 | -| 外部错误 | HUKS_ERR_CODE_EXTERNAL_ERROR | 外部错误。 | 12000012 | -| 缺失所需凭据 | HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST | 缺失所需凭据。 | 12000013 | -| 内存不足 | HUKS_ERR_CODE_INSUFFICIENT_MEMORY | 内存不足。 | 12000014 | -| 调用其他系统服务失败 | HUKS_ERR_CODE_CALL_SERVICE_FAILED | 调用其他系统服务失败。 | 12000015 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------- | ---- | ------------------------ | +| properties | Array\<[HuksParam](#huksparam)> | 否 | 属性,用于存HuksParam的数组。 | +| inData | Uint8Array | 否 | 输入数据。 | -## HuksKeyPurpose +## HuksSessionHandle9+ -表示密钥用途。 +huks Handle结构体。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ------------------------ | ---- | -------------------------------- | -| HUKS_KEY_PURPOSE_ENCRYPT | 1 | 表示密钥用于对明文进行加密操作。 | -| HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密钥用于对密文进行解密操作。 | -| HUKS_KEY_PURPOSE_SIGN | 4 | 表示密钥用于对数据进行签名。 | -| HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密钥用于验证签名后的数据。 | -| HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密钥用于派生密钥。 | -| HUKS_KEY_PURPOSE_WRAP | 32 | 表示密钥用于加密导出。 | -| HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密钥加密导入。 | -| HUKS_KEY_PURPOSE_MAC | 128 | 表示密钥用于生成mac消息验证码。 | -| HUKS_KEY_PURPOSE_AGREE | 256 | 表示密钥用于进行密钥协商。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ---------- | ---- | ---------------------------------------------------- | +| handle | number | 是 | 表示handle值。 | +| challenge | Uint8Array | 否 | 表示[init](#huksinit)操作之后获取到的challenge信息。 | -## HuksKeyDigest +## HuksReturnResult9+ -表示摘要算法。 +调用接口返回的result。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ---------------------- | ---- | ---------------------------------------- | -| HUKS_DIGEST_NONE | 0 | 表示无摘要算法。 | -| HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。 | -| HUKS_DIGEST_SM39+ | 2 | 表示SM3摘要算法。 | -| HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。 | -| HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。 | -| HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。 | -| HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。 | -| HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。 | -## HuksKeyPadding -表示补齐算法。 +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------------- | ---- | ---------------- | +| outData | Uint8Array | 否 | 表示输出数据。 | +| properties | Array\<[HuksParam](#huksparam)> | 否 | 表示属性信息。 | +| certChains | Array\ | 否 | 表示证书链数据。 | -**系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ---------------------- | ---- | ---------------------------------------- | -| HUKS_PADDING_NONE | 0 | 表示不使用补齐算法。 | -| HUKS_PADDING_OAEP | 1 | 表示使用OAEP补齐算法。 | -| HUKS_PADDING_PSS | 2 | 表示使用PSS补齐算法。 | -| HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5补齐算法。 | -| HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5补齐算法。 | -| HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7补齐算法。 | +## huks.generateKeyItem9+ -## HuksCipherMode +generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -表示加密模式。 +生成密钥,使用Callback回调异步返回结果。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ------------- | ---- | --------------------- | -| HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。 | -| HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。 | -| HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。 | -| HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。 | -| HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。 | -| HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。 | +**参数:** -## HuksKeySize +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | +| callback | AsyncCallback\ | 是 | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 | -表示密钥长度。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 以生成ECC256密钥为例 */ +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_ECC +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 +}; +let options = { + properties: properties +}; +try { + huks.generateKeyItem(keyAlias, options, function (error, data) { + if (error) { + console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: generateKeyItem key success`); + } + }); +} catch (error) { + console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` -| 名称 | 值 | 说明 | -| ---------------------------------- | ---- | ------------------------------------------ | -| HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密钥长度为512bit。 | -| HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密钥长度为768bit。 | -| HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密钥长度为1024bit。 | -| HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密钥长度为2048bit。 | -| HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密钥长度为3072bit。 | -| HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密钥长度为4096bit。 | -| HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密钥长度为224bit。 | -| HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密钥长度为256bit。 | -| HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密钥长度为384bit。 | -| HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密钥长度为521bit。 | -| HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密钥长度为128bit。 | -| HUKS_AES_KEY_SIZE_192 | 196 | 表示使用AES算法的密钥长度为196bit。 | -| HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密钥长度为256bit。 | -| HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密钥长度为512bit。 | -| HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密钥长度为256bit。 | -| HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密钥长度为2048bit。 | -| HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密钥长度为3072bit。 | -| HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密钥长度为4096bit。 | -| HUKS_SM2_KEY_SIZE_2569+ | 256 | 表示SM2算法的密钥长度为256bit。 | -| HUKS_SM4_KEY_SIZE_1289+ | 128 | 表示SM4算法的密钥长度为128bit。 | +## huks.generateKeyItem9+ -## HuksKeyAlg +generateKeyItem(keyAlias: string, options: HuksOptions) : Promise\ -表示密钥使用的算法。 +生成密钥,使用Promise方式异步返回结果。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ------------------------- | ---- | --------------------- | -| HUKS_ALG_RSA | 1 | 表示使用RSA算法。 | -| HUKS_ALG_ECC | 2 | 表示使用ECC算法。 | -| HUKS_ALG_DSA | 3 | 表示使用DSA算法。 | -| HUKS_ALG_AES | 20 | 表示使用AES算法。 | -| HUKS_ALG_HMAC | 50 | 表示使用HMAC算法。 | -| HUKS_ALG_HKDF | 51 | 表示使用HKDF算法。 | -| HUKS_ALG_PBKDF2 | 52 | 表示使用PBKDF2算法。 | -| HUKS_ALG_ECDH | 100 | 表示使用ECDH算法。 | -| HUKS_ALG_X25519 | 101 | 表示使用X25519算法。 | -| HUKS_ALG_ED25519 | 102 | 表示使用ED25519算法。 | -| HUKS_ALG_DH | 103 | 表示使用DH算法。 | -| HUKS_ALG_SM29+ | 150 | 表示使用SM2算法。 | -| HUKS_ALG_SM39+ | 151 | 表示使用SM3算法。 | -| HUKS_ALG_SM49+ | 152 | 表示使用SM4算法。 | - -## HuksKeyGenerateType +**参数:** -表示生成密钥的类型。 +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------ | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | -**系统能力**:SystemCapability.Security.Huks +**示例:** -| 名称 | 值 | 说明 | -| ------------------------------ | ---- | ---------------- | -| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默认生成的密钥。 | -| HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密钥。 | -| HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 协商生成的密钥。 | - -## HuksKeyFlag - -表示密钥的产生方式。 - -**系统能力**:SystemCapability.Security.Huks +```js +/* 以生成ECC256密钥为例 */ +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_ECC +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 +}; +let options = { + properties: properties +}; +try { + huks.generateKeyItem(keyAlias, options) + .then((data) => { + console.info(`promise: generateKeyItem success`); + }) + .catch(error => { + console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); +} catch (error) { + console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` -| 名称 | 值 | 说明 | -| -------------------------- | ---- | ------------------------------------ | -| HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通过导入公钥接口导入的密钥。 | -| HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通过生成密钥接口生成的密钥。 | -| HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通过生成密钥协商接口生成的密钥。 | -| HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通过生成密钥派生接口生成的密钥。 | +## huks.deleteKeyItem9+ -## HuksKeyStorageType +deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -表示密钥存储方式。 +删除密钥,使用Callback回调异步返回结果。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ----------------------- | ---- | ------------------------------ | -| HUKS_STORAGE_TEMP | 0 | 表示通过本地直接管理密钥。 | -| HUKS_STORAGE_PERSISTENT | 1 | 表示通过HUKS service管理密钥。 | +**参数:** -## HuksSendType +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\ | 是 | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 | -表示发送Tag的方式。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 此处options选择emptyOptions传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +try { + huks.deleteKeyItem(keyAlias, emptyOptions, function (error, data) { + if (error) { + console.error(`callback: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: deleteKeyItem key success`); + } + }); +} catch (error) { + console.error(`callback: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` -| 名称 | 值 | 说明 | -| -------------------- | ---- | ----------------- | -| HUKS_SEND_TYPE_ASYNC | 0 | 表示异步发送TAG。 | -| HUKS_SEND_TYPE_SYNC | 1 | 表示同步发送TAG。 | +## huks.deleteKeyItem9+ -## HuksUnwrapSuite9+ +deleteKeyItem(keyAlias: string, options: HuksOptions) : Promise\ -表示导入加密密钥的算法套件。 +删除密钥,使用Promise方式异步返回结果。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ---------------------------------------------- | ---- | ----------------------------------------------------- | -| HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING | 1 | 导入加密密钥时,X25519密钥协商后使用AES-256 GCM加密。 | -| HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING | 2 | 导入加密密钥时,ECDH密钥协商后使用AES-256 GCM加密。 | +**参数:** -## HuksImportKeyType9+ +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------------------------------- | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -表示导入密钥的密钥类型,默认为导入公钥,导入对称密钥时不需要该字段。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 此处options选择emptyOptions传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +try { + huks.deleteKeyItem(keyAlias, emptyOptions) + .then ((data) => { + console.info(`promise: deleteKeyItem key success`); + }) + .catch(error => { + console.error(`promise: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); +} catch (error) { + console.error(`promise: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` -| 名称 | 值 | 说明 | -| ------------------------- | ---- | ------------------------------ | -| HUKS_KEY_TYPE_PUBLIC_KEY | 0 | 表示导入的密钥类型为公钥。 | -| HUKS_KEY_TYPE_PRIVATE_KEY | 1 | 表示导入的密钥类型为私钥。 | -| HUKS_KEY_TYPE_KEY_PAIR | 2 | 表示导入的密钥类型为公私钥对。 | +## huks.getSdkVersion -## HuksUserAuthType9+ +getSdkVersion(options: HuksOptions) : string -表示用户认证类型。 +获取当前系统sdk版本。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ------------------------------- | ---- | ------------------------- | -| HUKS_USER_AUTH_TYPE_FINGERPRINT | 1 | 表示用户认证类型为指纹。 | -| HUKS_USER_AUTH_TYPE_FACE | 2 | 表示用户认证类型为人脸 。 | -| HUKS_USER_AUTH_TYPE_PIN | 4 | 表示用户认证类型为PIN码。 | - -## HuksAuthAccessType9+ - -表示安全访问控制类型。 +**参数:** -**系统能力**:SystemCapability.Security.Huks +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------- | ---- | ------------------------- | +| options | [HuksOptions](#huksoptions) | 是 | 空对象,用于存放sdk版本。 | -| 名称 | 值 | 说明 | -| --------------------------------------- | ---- | ------------------------------------------------ | -| HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 | 表示安全访问控制类型为清除密码后密钥无效。 | -| HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 2 | 表示安全访问控制类型为新录入生物特征后密钥无效。 | +**返回值:** -## HuksChallengeType9+ +| 类型 | 说明 | +| ------ | ------------- | +| string | 返回sdk版本。 | -表示密钥使用时生成challenge的类型。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 此处options选择emptyOptions传空 */ +let emptyOptions = { + properties: [] +}; +let result = huks.getSdkVersion(emptyOptions); +``` -| 名称 | 值 | 说明 | -| ------------------------------- | ---- | ------------------------------ | -| HUKS_CHALLENGE_TYPE_NORMAL | 0 | 表示challenge为普通类型,默认32字节。 | -| HUKS_CHALLENGE_TYPE_CUSTOM | 1 | 表示challenge为用户自定义类型。支持使用多个密钥仅一次认证。 | -| HUKS_CHALLENGE_TYPE_NONE | 2 | 表示免challenge类型。 | +## huks.importKeyItem9+ -## HuksChallengePosition9+ +importKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -表示challenge类型为用户自定义类型时,生成的challenge有效长度仅为8字节连续的数据,且仅支持4种位置 。 +导入明文密钥,使用Callback方式回调异步返回结果 。 **系统能力**:SystemCapability.Security.Huks -| 名称 | 值 | 说明 | -| ------------------------------- | ---- | ------------------------------ | -| HUKS_CHALLENGE_POS_0 | 0 | 表示0~7字节为当前密钥的有效challenge。 | -| HUKS_CHALLENGE_POS_1 | 1 | 表示8~15字节为当前密钥的有效challenge。 | -| HUKS_CHALLENGE_POS_2 | 2 | 表示16~23字节为当前密钥的有效challenge。 | -| HUKS_CHALLENGE_POS_3 | 3 | 表示24~31字节为当前密钥的有效challenge。 | +**参数:** -## HuksSecureSignType9+ +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | +| callback | AsyncCallback\ | 是 | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 | -表示生成或导入密钥时,指定该密钥的签名类型。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 以导入AES256密钥为例 */ +let plainTextSize32 = makeRandomArr(32); +function makeRandomArr(size) { + let arr = new Uint8Array(size); + for (let i = 0; i < size; i++) { + arr[i] = Math.floor(Math.random() * 10); + } + return arr; +}; +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: + huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +let options = { + properties: properties, + inData: plainTextSize32 +}; +try { + huks.importKeyItem(keyAlias, options, function (error, data) { + if (error) { + console.error(`callback: importKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: importKeyItem success`); + } + }); +} catch (error) { + console.error(`callback: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` -| 名称 | 值 | 说明 | -| ------------------------------ | ---- | ------------------------------------------------------------ | -| HUKS_SECURE_SIGN_WITH_AUTHINFO | 1 | 表示签名类型为携带认证信息。生成或导入密钥时指定该字段,则在使用密钥进行签名时,对待签名的数据添加认证信息后进行签名。 | +## huks.importKeyItem9+ -## HuksTagType +importKeyItem(keyAlias: string, options: HuksOptions) : Promise\ -表示Tag的数据类型。 +导入明文密钥,使用Promise方式异步返回结果。 **系统能力**:SystemCapability.Security.Huks +**参数:** -| 名称 | 值 | 说明 | -| --------------------- | ------- | --------------------------------------- | -| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。 | -| HUKS_TAG_TYPE_INT | 1 << 28 | 表示该Tag的数据类型为int类型的number。 | -| HUKS_TAG_TYPE_UINT | 2 << 28 | 表示该Tag的数据类型为uint类型的number。 | -| HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示该Tag的数据类型为bigint。 | -| HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示该Tag的数据类型为boolean。 | -| HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示该Tag的数据类型为Uint8Array。 | - -## HuksTag +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ----------------------------------- | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | -表示调用参数的Tag。 +**示例:** -**系统能力**:SystemCapability.Security.Huks +```js +/* 以导入AES128为例 */ +let plainTextSize32 = makeRandomArr(32); -| 名称 | 值 | 说明 | -| -------------------------------------------- | ---------------------------------------- | -------------------------------------- | -| HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID \| 0 | 表示非法的Tag。 | -| HUKS_TAG_ALGORITHM | HUKS_TAG_TYPE_UINT \| 1 | 表示算法的Tag。 | -| HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT \| 2 | 表示密钥用途的Tag。 | -| HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 3 | 表示密钥长度的Tag。 | -| HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT \| 4 | 表示摘要算法的Tag。 | -| HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT \| 5 | 表示补齐算法的Tag。 | -| HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT \| 6 | 表示加密模式的Tag。 | -| HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 7 | 表示密钥类型的Tag。 | -| HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 8 | 表示附加身份验证数据的Tag。 | -| HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 9 | 表示密钥加解密的字段。 | -| HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10 | 表示密钥初始化的向量。 | -| HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 11 | 表示密钥派生时的info。 | -| HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 12 | 表示密钥派生时的盐值。 | -| HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES \| 13 | 表示密钥派生时的password。 | -| HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT \| 14 | 表示密钥派生时的迭代次数。 | -| HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 15 | 表示生成密钥类型的Tag。 | -| HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 16 | 表示密钥派生时的主密钥。 | -| HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES \| 17 | 表示密钥派生时的派生因子。 | -| HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 18 | 表示密钥派生时的算法类型。 | -| HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 19 | 表示密钥协商时的算法类型。 | -| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 20 | 表示密钥协商时的公钥别名。 | -| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 21 | 表示密钥协商时的私钥别名。 | -| HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 22 | 表示密钥协商时的公钥。 | -| HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 23 | 表示密钥别名。 | -| HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 24 | 表示派生密钥的大小。 | -| HUKS_TAG_IMPORT_KEY_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 25 | 表示导入的密钥类型。 | -| HUKS_TAG_UNWRAP_ALGORITHM_SUITE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 26 | 表示导入加密密钥的套件。 | -| HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 201 | 预留。 | -| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 202 | 预留。 | -| HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 203 | 预留。 | -| HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 204 | 预留。 | -| HUKS_TAG_ALL_USERS | ksTagType.HUKS_TAG_TYPE_BOOL \| 301 | 预留。 | -| HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT \| 302 | 预留。 | -| HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL \| 303 | 预留。 | -| HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 304 | 表示用户认证类型。从[HuksUserAuthType](#huksuserauthtype9)中选择,需要与安全访问控制类型同时设置。支持同时指定两种用户认证类型,如:安全访问控制类型指定为HKS_SECURE_ACCESS_INVALID_NEW_BIO_ENROLL时,密钥访问认证类型可以指定以下三种: HKS_USER_AUTH_TYPE_FACE 、HKS_USER_AUTH_TYPE_FINGERPRINT、HKS_USER_AUTH_TYPE_FACE \| HKS_USER_AUTH_TYPE_FINGERPRINT | -| HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT \| 305 | 预留。 | -| HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES \| 306 | 预留。 | -| HUKS_TAG_KEY_AUTH_ACCESS_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 307 | 表示安全访问控制类型。从[HuksAuthAccessType](#huksauthaccesstype9)中选择,需要和用户认证类型同时设置。 | -| HUKS_TAG_KEY_SECURE_SIGN_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 308 | 表示生成或导入密钥时,指定该密钥的签名类型。 | -| HUKS_TAG_CHALLENGE_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 309 | 表示密钥使用时生成的challenge类型。从[HuksChallengeType](#hukschallengetype9)中选择 | -| HUKS_TAG_CHALLENGE_POS9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 310 | 表示challenge类型为用户自定义类型时,huks产生的challenge有效长度仅为8字节连续的数据。从[HuksChallengePosition](#hukschallengeposition9)中选择。 | -| HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 501 | 表示attestation时的挑战值。 | -| HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 502 | 表示attestation时拥有该密钥的application的Id。 | -| HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES \| 503 | 表示设备的品牌。 | -| HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 504 | 表示设备的设备ID。 | -| HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 505 | 表示设备的产品名。 | -| HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 506 | 表示设备的SN号。 | -| HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES \| 507 | 表示设备的IMEI号。 | -| HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 508 | 表示设备的MEID号。 | -| HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES \| 509 | 表示设备的制造商。 | -| HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 510 | 表示设备的型号。 | -| HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 511 | 表示attestation时的密钥别名。 | -| HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 512 | 表示设备的SOCID。 | -| HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 513 | 表示设备的UDID。 | -| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 514 | 表示attestation时的安全凭据。 | -| HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 515 | 表示attestation时的版本号。 | -| HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001 | 表示是否使用生成key时传入的别名的Tag。 | -| HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1002 | 表示密钥存储方式的Tag。 | -| HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003 | 预留。 | -| HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1004 | 预留。 | -| HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005 | 预留。 | -| HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1006 | 预留。 | -| HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1007 | 表示密钥标志的Tag。 | -| HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT \| 1008 | 预留。 | -| HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009 | 预留。 | -| HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010 | 预留。 | -| HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT \| 1011 | 预留。 | -| HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | 表示进程名称的Tag。 | -| HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | 预留。 | -| HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10003 | 预留。 | -| HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10004 | 预留。 | -| HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | 预留。 | -| HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | 预留。 | -| HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10007 | 表示密钥版本的Tag。 | -| HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT \| 10008 | 预留。 | -| HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | 预留。 | -| HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | 预留。 | -| HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10101 | 表示操作系统版本的Tag。 | -| HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT \| 10102 | 表示操作系统补丁级别的Tag。 | -| HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | 预留。 | -| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | 预留。 | -| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | 预留。 | - -## huks.generateKey(deprecated) - -generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -生成密钥,使用Callback回调异步返回结果。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.generateKeyItem9+](#huksgeneratekeyitem9)替代。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。 | - -**示例:** - -```js -/* 以生成RSA512密钥为例 */ -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: -huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | -huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_OAEP -}; -properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 -}; -var options = { - properties: properties -}; -huks.generateKey(keyAlias, options, function (err, data){}); -``` - -## huks.generateKey(deprecated) - -generateKey(keyAlias: string, options: HuksOptions) : Promise\ - -生成密钥,使用Promise方式异步返回结果。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.generateKeyItem9+](#huksgeneratekeyitem9-1)替代。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------ | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | - -**返回值**:(可选,如不涉及可删除) - -| 类型 | 说明 | -| ----------------------------------- | -------------------------------------------------- | -| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | - -**示例:** - -```js -/* 以生成ECC256密钥为例 */ -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_ECC -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: -huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | -huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 -}; -var options = { - properties: properties +function makeRandomArr(size) { + let arr = new Uint8Array(size); + for (let i = 0; i < size; i++) { + arr[i] = Math.floor(Math.random() * 10); + } + return arr; }; -var result = huks.generateKey(keyAlias, options); -``` - -## huks.generateKeyItem9+ - -generateKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -生成密钥,使用Callback回调异步返回结果。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | -| callback | AsyncCallback\ | 是 | 不返回err值时表示接口使用成功,其他时为错误。 | -**示例:** - -```js -/* 以生成ECC256密钥为例 */ -var keyAlias = 'keyAlias'; -var properties = new Array(); +/*第一步:生成密钥*/ +let keyAlias = 'keyAlias'; +let properties = new Array(); properties[0] = { tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_ECC + value: huks.HuksKeyAlg.HUKS_ALG_AES }; properties[1] = { tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 }; properties[2] = { tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: - huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | - huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT }; properties[3] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + tag: huks.HuksTag.HUKS_TAG_PADDING, + value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 }; -var options = { - properties: properties +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +let huksoptions = { + properties: properties, + inData: plainTextSize32 }; try { - huks.generateKeyItem(keyAlias, options, function (error, data) { - if (error) { - console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: generateKeyItem key success`); - } - }); + huks.importKeyItem(keyAlias, huksoptions) + .then ((data) => { + console.info(`promise: importKeyItem success`); + }) + .catch(error => { + console.error(`promise: importKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); } catch (error) { - console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + console.error(`promise: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); } ``` -## huks.generateKeyItem9+ +## huks.attestKeyItem9+ -generateKeyItem(keyAlias: string, options: HuksOptions) : Promise\ +attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -生成密钥,使用Promise方式异步返回结果。 +获取密钥证书,使用Callback方式回调异步返回结果 。 **系统能力**:SystemCapability.Security.Huks -**参数:** +**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------ | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,存放待获取证书密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于获取证书时指定所需参数与数据。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 以生成ECC256密钥为例 */ -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_ECC -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: - huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | - huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 -}; -var options = { - properties: properties -}; -try { - huks.generateKeyItem(keyAlias, options) - .then((data) => { - console.info(`promise: generateKeyItem success`); - }) - .catch(error => { - console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); -} catch (error) { - console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); -} -``` - -## huks.deleteKey(deprecated) - -deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -删除密钥,使用Callback回调异步返回结果。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.deleteKeyItem9+](#huksdeletekeyitem9)替代。 - -**系统能力**:SystemCapability.Security.Huks +let securityLevel = stringToUint8Array('sec_level'); +let challenge = stringToUint8Array('challenge_data'); +let versionInfo = stringToUint8Array('version_info'); +let keyAliasString = "key attest"; -**参数:** +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; +} -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | -------------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +async function generateKey(alias) { + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG, + value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + properties[5] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PSS + }; + properties[6] = { + tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE, + value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT + }; + properties[7] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB + }; + let options = { + properties: properties + }; -**示例:** + try { + huks.generateKeyItem(alias, options, function (error, data) { + if (error) { + console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: generateKeyItem success`); + } + }); + } catch (error) { + console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} -```js -/* 此处options选择emptyOptions传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -huks.deleteKey(keyAlias, emptyOptions, function (err, data) {}); +async function attestKey() { + let aliasString = keyAliasString; + let aliasUint8 = stringToUint8Array(aliasString); + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO, + value: securityLevel + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE, + value: challenge + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO, + value: versionInfo + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS, + value: aliasUint8 + }; + let options = { + properties: properties + }; + await generateKey(aliasString); + try { + huks.attestKeyItem(aliasString, options, function (error, data) { + if (error) { + console.error(`callback: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: attestKeyItem success`); + } + }); + } catch (error) { + console.error(`callback: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} ``` -## huks.deleteKey(deprecated) - -deleteKey(keyAlias: string, options: HuksOptions) : Promise\ +## huks.attestKeyItem9+ -删除密钥,使用Promise方式异步返回结果。 +attestKeyItem(keyAlias: string, options: HuksOptions) : Promise\ -> **说明:** 从API Version 9开始废弃,建议使用[huks.deleteKeyItem9+](#huksdeletekeyitem9-1)替代。 +获取密钥证书,使用Promise方式异步返回结果 。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------- | ---- | ----------------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------------------ | +| keyAlias | string | 是 | 密钥别名,存放待获取证书密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于获取证书时指定所需参数与数据。 | **返回值:** -| 类型 | 说明 | -| ----------------------------------- | -------------------------------------------------- | -| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +| 类型 | 说明 | +| ---------------------------------------------- | --------------------------------------------- | +| Promise<[HuksReturnResult](#huksreturnresult)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -var result = huks.deleteKey(keyAlias, emptyOptions); -``` - -## huks.deleteKeyItem9+ - -deleteKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -删除密钥,使用Callback回调异步返回结果。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** +let securityLevel = stringToUint8Array('sec_level'); +let challenge = stringToUint8Array('challenge_data'); +let versionInfo = stringToUint8Array('version_info'); +let keyAliasString = "key attest"; -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\ | 是 | 不返回err值时表示接口使用成功,其他时为错误。 | +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; +} -**示例:** +async function generateKey(alias) { + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG, + value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + properties[5] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PSS + }; + properties[6] = { + tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE, + value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT + }; + properties[7] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB + }; + let options = { + properties: properties + }; -```js -/* 此处options选择emptyOptions传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -try { - huks.deleteKeyItem(keyAlias, emptyOptions, function (error, data) { - if (error) { - console.error(`callback: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: deleteKeyItem key success`); - } - }); -} catch (error) { - console.error(`callback: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + try { + await huks.generateKeyItem(alias, options) + .then((data) => { + console.info(`promise: generateKeyItem success`); + }) + .catch(error => { + console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } } -``` -## huks.deleteKeyItem9+ - -deleteKeyItem(keyAlias: string, options: HuksOptions) : Promise\ - -删除密钥,使用Promise方式异步返回结果。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------------------------------- | -| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | - -**示例:** - -```js -/* 此处options选择emptyOptions传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -try { - huks.deleteKeyItem(keyAlias, emptyOptions) - .then ((data) => { - console.info(`promise: deleteKeyItem key success`); - }) - .catch(error => { - console.error(`promise: deleteKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); -} catch (error) { - console.error(`promise: deleteKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); +async function attestKey() { + let aliasString = keyAliasString; + let aliasUint8 = stringToUint8Array(aliasString); + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO, + value: securityLevel + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE, + value: challenge + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO, + value: versionInfo + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS, + value: aliasUint8 + }; + let options = { + properties: properties + }; + await generateKey(aliasString); + try { + await huks.attestKeyItem(aliasString, options) + .then ((data) => { + console.info(`promise: attestKeyItem success`); + }) + .catch(error => { + console.error(`promise: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } } ``` -## huks.getSdkVersion +## huks.importWrappedKeyItem9+ -getSdkVersion(options: HuksOptions) : string +importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -获取当前系统sdk版本。 +导入加密密钥,使用Callback方式回调异步返回结果 。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ---------- | ---- | ------------------------- | -| options | [HuksOptions](#huksoptions) | 是 | 空对象,用于存放sdk版本。 | - -**返回值:** - -| 类型 | 说明 | -| ------ | ------------- | -| string | 返回sdk版本。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------------- | --------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,存放待导入密钥的别名。 | +| wrappingKeyAlias | string | 是 | 密钥别名,对应密钥用于解密加密的密钥数据。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的加密的密钥数据。 | +| callback | AsyncCallback\ | 是 | 回调函数。不返回err值时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions传空 */ -var emptyOptions = { - properties: [] -}; -var result = huks.getSdkVersion(emptyOptions); -``` - -## huks.importKey(deprecated) - -importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -导入明文密钥,使用Callback方式回调异步返回结果 。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.importKeyItem9+](#huksimportkeyitem9)替代。 - -**系统能力**:SystemCapability.Security.Huks +import huks from '@ohos.security.huks'; -**参数:** +let exportWrappingKey; +let alias1 = "importAlias"; +let alias2 = "wrappingKeyAlias"; -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------ | ---- | ------------------------------------------------- | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +async function TestGenFunc(alias, options) { + try { + await genKey(alias, options) + .then((data) => { + console.info(`callback: generateKeyItem success`); + }) + .catch(error => { + console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} -**示例:** +function genKey(alias, options) { + return new Promise((resolve, reject) => { + try { + huks.generateKeyItem(alias, options, function (error, data) { + if (error) { + reject(error); + } else { + resolve(data); + } + }); + } catch (error) { + throw(error); + } + }); +} -```js -/* 以导入AES256密钥为例 */ -var plainTextSize32 = makeRandomArr(32); -function makeRandomArr(size) { - var arr = new Uint8Array(size); - for (var i = 0; i < size; i++) { - arr[i] = Math.floor(Math.random() * 10); +async function TestExportFunc(alias, options) { + try { + await exportKey(alias, options) + .then ((data) => { + console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`); + exportWrappingKey = data.outData; + }) + .catch(error => { + console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); } - return arr; -}; -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_AES -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: -huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 -}; -properties[4] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB -}; -var options = { - properties: properties, - inData: plainTextSize32 -}; -huks.importKey(keyAlias, options, function (err, data){}); -``` - -## huks.importKey(deprecated) +} -importKey(keyAlias: string, options: HuksOptions) : Promise\ +function exportKey(alias, options) : Promise { + return new Promise((resolve, reject) => { + try { + huks.exportKeyItem(alias, options, function (error, data) { + if (error) { + reject(error); + } else { + resolve(data); + } + }); + } catch (error) { + throw(error); + } + }); +} -导入明文密钥,使用Promise方式异步返回结果。 +async function TestImportWrappedFunc(alias, wrappingAlias, options) { + try { + await importWrappedKey(alias, wrappingAlias, options) + .then ((data) => { + console.info(`callback: importWrappedKeyItem success`); + }) + .catch(error => { + console.error(`callback: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`callback: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} -> **说明:** 从API Version 9开始废弃,建议使用[huks.importKeyItem9+](#huksimportkeyitem9-1)替代。 +function importWrappedKey(alias, wrappingAlias, options) { + return new Promise((resolve, reject) => { + try { + huks.importWrappedKeyItem(alias, wrappingAlias, options, function (error, data) { + if (error) { + reject(error); + } else { + resolve(data); + } + }); + } catch (error) { + throw(error); + } + }); +} -**系统能力**:SystemCapability.Security.Huks +async function TestImportWrappedKeyFunc( + alias, + wrappingAlias, + genOptions, + importOptions +) { + await TestGenFunc(wrappingAlias, genOptions); + await TestExportFunc(wrappingAlias, genOptions); -**参数:** + /* 以下操作不需要调用HUKS接口,此处不给出具体实现。 + * 假设待导入的密钥为keyA + * 1.生成ECC公私钥keyB,公钥为keyB_pub, 私钥为keyB_pri + * 2.使用keyB_pri和wrappingAlias密钥中获取的公钥进行密钥协商,协商出共享密钥share_key + * 3.随机生成密钥kek,用于加密keyA,采用AES-GCM加密,加密过程中需要记录:nonce1、aad1、加密后的密文keyA_enc、加密后的tag1。 + * 4.使用share_key加密kek,采用AES-GCM加密,加密过程中需要记录:nonce2、aad2、加密后的密文kek_enc、加密后的tag2。 + * 5.拼接importOptions.inData字段,满足以下格式: + * keyB_pub的长度(4字节) + keyB_pub的数据 + aad2的长度(4字节) + aad2的数据 + + * nonce2的长度(4字节) + nonce2的数据 + tag2的长度(4字节) + tag2的数据 + + * kek_enc的长度(4字节) + kek_enc的数据 + aad1的长度(4字节) + aad1的数据 + + * nonce1的长度(4字节) + nonce1的数据 + tag1的长度(4字节) + tag1的数据 + + * keyA长度占用的内存长度(4字节) + keyA的长度 + keyA_enc的长度(4字节) + keyA_enc的数据 + */ + let inputKey = new Uint8Array([0x02, 0x00, 0x00, 0x00]); + importOptions.inData = inputKey; + await TestImportWrappedFunc(alias, wrappingAlias, importOptions); +} -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------- | ---- | ------------------------------------ | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | +function makeGenerateOptions() { + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_ECC + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_UNWRAP + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_IMPORT_KEY_TYPE, + value: huks.HuksImportKeyType.HUKS_KEY_TYPE_KEY_PAIR, + }; + let options = { + properties: properties + }; + return options; +}; -**返回值:** +function makeImportOptions() { + let properties = new Array(); + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_CBC + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_NONE + }; + properties[5] = { + tag: huks.HuksTag.HUKS_TAG_UNWRAP_ALGORITHM_SUITE, + value: huks.HuksUnwrapSuite.HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING + }; + let options = { + properties: properties + }; + return options; +}; -| 类型 | 说明 | -| ----------------------------------- | -------------------------------------------------- | -| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +function huksImportWrappedKey() { + let genOptions = makeGenerateOptions(); + let importOptions = makeImportOptions(); + TestImportWrappedKeyFunc( + alias1, + alias2, + genOptions, + importOptions + ); +} +``` + +## huks.importWrappedKeyItem9+ + +importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions) : Promise\ + +导入加密密钥,使用Promise方式异步返回结果。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------------- | --------------------------- | ---- | --------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,存放待导入密钥的别名。 | +| wrappingKeyAlias | string | 是 | 密钥别名,对应密钥用于解密加密的密钥数据。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的加密的密钥数据。 | **示例:** ```js -/* 以导入AES128为例 */ -var plainTextSize32 = makeRandomArr(32); - -function makeRandomArr(size) { - var arr = new Uint8Array(size); - for (var i = 0; i < size; i++) { - arr[i] = Math.floor(Math.random() * 10); +/* 处理流程与callback类似,主要差异点为如下函数: */ +async function TestImportWrappedFunc(alias, wrappingAlias, options) { + try { + await huks.importWrappedKeyItem(alias, wrappingAlias, options) + .then ((data) => { + console.info(`promise: importWrappedKeyItem success`); + }) + .catch(error => { + console.error(`promise: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); } - return arr; -}; - -/*第一步:生成密钥*/ -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_AES -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 -}; -properties[4] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB -}; -var huksoptions = { - properties: properties, - inData: plainTextSize32 -}; -var result = huks.importKey(keyAlias, huksoptions); +} ``` -## huks.importKeyItem9+ +## huks.exportKeyItem9+ -importKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -导入明文密钥,使用Callback方式回调异步返回结果 。 +导出密钥,使用Callback方式回调异步返回的结果。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | -| callback | AsyncCallback\ | 是 | 不返回err值时表示接口使用成功,其他时为错误。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | **示例:** ```js -/* 以导入AES256密钥为例 */ -var plainTextSize32 = makeRandomArr(32); -function makeRandomArr(size) { - var arr = new Uint8Array(size); - for (var i = 0; i < size; i++) { - arr[i] = Math.floor(Math.random() * 10); - } - return arr; -}; -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_AES -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: - huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 -}; -properties[4] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB -}; -var options = { - properties: properties, - inData: plainTextSize32 +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] }; try { - huks.importKeyItem(keyAlias, options, function (error, data) { + huks.exportKeyItem(keyAlias, emptyOptions, function (error, data) { if (error) { - console.error(`callback: importKeyItem failed, code: ${error.code}, msg: ${error.message}`); + console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); } else { - console.info(`callback: importKeyItem success`); + console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`); } }); } catch (error) { - console.error(`callback: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); } ``` -## huks.importKeyItem9+ +## huks.exportKeyItem9+ -importKeyItem(keyAlias: string, options: HuksOptions) : Promise\ +exportKeyItem(keyAlias: string, options: HuksOptions) : Promise\ -导入明文密钥,使用Promise方式异步返回结果。 +导出密钥,使用Promise方式回调异步返回的结果。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ----------------------------------- | -| keyAlias | string | 是 | 密钥别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -**示例:** +**返回值:** -```js -/* 以导入AES128为例 */ -var plainTextSize32 = makeRandomArr(32); +| 类型 | 说明 | +| ---------------------------------------------- | ------------------------------------------------------------ | +| Promise<[HuksReturnResult](#huksreturnresult)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | -function makeRandomArr(size) { - var arr = new Uint8Array(size); - for (var i = 0; i < size; i++) { - arr[i] = Math.floor(Math.random() * 10); - } - return arr; -}; +**示例:** -/*第一步:生成密钥*/ -var keyAlias = 'keyAlias'; -var properties = new Array(); -properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_AES -}; -properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 -}; -properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT -}; -properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 -}; -properties[4] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB -}; -var huksoptions = { - properties: properties, - inData: plainTextSize32 +```js +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] }; try { - huks.importKeyItem(keyAlias, huksoptions) + huks.exportKeyItem(keyAlias, emptyOptions) .then ((data) => { - console.info(`promise: importKeyItem success`); + console.info(`promise: exportKeyItem success, data = ${JSON.stringify(data)}`); }) .catch(error => { - console.error(`promise: importKeyItem failed, code: ${error.code}, msg: ${error.message}`); + console.error(`promise: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); }); } catch (error) { - console.error(`promise: importKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + console.error(`promise: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); } ``` -## huks.attestKeyItem9+ +## huks.getKeyItemProperties9+ -attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +getKeyItemProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -获取密钥证书,使用Callback方式回调异步返回结果 。 +获取密钥属性,使用Callback回调异步返回结果。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,存放待获取证书密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于获取证书时指定所需参数与数据。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 不返回err值时表示接口使用成功,其他时为错误。 | - -**示例:** - -```js -let securityLevel = stringToUint8Array('sec_level'); -let challenge = stringToUint8Array('challenge_data'); -let versionInfo = stringToUint8Array('version_info'); -let keyAliasString = "key attest"; - -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} - -async function generateKey(alias) { - let properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG, - value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - properties[5] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_PSS - }; - properties[6] = { - tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE, - value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT - }; - properties[7] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB - }; - let options = { - properties: properties - }; +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | - try { - huks.generateKeyItem(alias, options, function (error, data) { - if (error) { - console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: generateKeyItem success`); - } - }); - } catch (error) { - console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} +**示例:** -async function attestKey() { - let aliasString = keyAliasString; - let aliasUint8 = stringToUint8Array(aliasString); - let properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO, - value: securityLevel - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE, - value: challenge - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO, - value: versionInfo - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS, - value: aliasUint8 - }; - let options = { - properties: properties - }; - await generateKey(aliasString); - try { - huks.attestKeyItem(aliasString, options, function (error, data) { - if (error) { - console.error(`callback: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: attestKeyItem success`); - } - }); - } catch (error) { - console.error(`callback: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } +```js +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +try { + huks.getKeyItemProperties(keyAlias, emptyOptions, function (error, data) { + if (error) { + console.error(`callback: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: getKeyItemProperties success, data = ${JSON.stringify(data)}`); + } + }); +} catch (error) { + console.error(`callback: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`); } ``` -## huks.attestKeyItem9+ +## huks.getKeyItemProperties9+ -attestKeyItem(keyAlias: string, options: HuksOptions) : Promise\ +getKeyItemProperties(keyAlias: string, options: HuksOptions) : Promise\ -获取密钥证书,使用Promise方式异步返回结果 。 +获取密钥属性,使用Promise回调异步返回结果。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------ | -| keyAlias | string | 是 | 密钥别名,存放待获取证书密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于获取证书时指定所需参数与数据。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | **返回值:** -| 类型 | 说明 | -| ---------------------------------------------- | --------------------------------------------- | -| Promise<[HuksReturnResult](#huksreturnresult)> | 不返回err值时表示接口使用成功,其他时为错误。 | +| 类型 | 说明 | +| ----------------------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksReturnResult](#huksreturnresult)> | Promise对象。不返回err值时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 | **示例:** ```js -let securityLevel = stringToUint8Array('sec_level'); -let challenge = stringToUint8Array('challenge_data'); -let versionInfo = stringToUint8Array('version_info'); -let keyAliasString = "key attest"; - -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} - -async function generateKey(alias) { - let properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG, - value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - properties[5] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_PSS - }; - properties[6] = { - tag: huks.HuksTag.HUKS_TAG_KEY_GENERATE_TYPE, - value: huks.HuksKeyGenerateType.HUKS_KEY_GENERATE_TYPE_DEFAULT - }; - properties[7] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB - }; - let options = { - properties: properties - }; - - try { - await huks.generateKeyItem(alias, options) - .then((data) => { - console.info(`promise: generateKeyItem success`); - }) - .catch(error => { - console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} - -async function attestKey() { - let aliasString = keyAliasString; - let aliasUint8 = stringToUint8Array(aliasString); - let properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO, - value: securityLevel - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_CHALLENGE, - value: challenge - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_VERSION_INFO, - value: versionInfo - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_ATTESTATION_ID_ALIAS, - value: aliasUint8 - }; - let options = { - properties: properties - }; - await generateKey(aliasString); - try { - await huks.attestKeyItem(aliasString, options) - .then ((data) => { - console.info(`promise: attestKeyItem success`); - }) - .catch(error => { - console.error(`promise: attestKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: attestKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +try { + huks.getKeyItemProperties(keyAlias, emptyOptions) + .then ((data) => { + console.info(`promise: getKeyItemProperties success, data = ${JSON.stringify(data)}`); + }) + .catch(error => { + console.error(`promise: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`); + }); +} catch (error) { + console.error(`promise: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`); } ``` -## huks.importWrappedKeyItem9+ +## huks.isKeyItemExist9+ -importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +isKeyItemExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -导入加密密钥,使用Callback方式回调异步返回结果 。 +判断密钥是否存在,使用Callback回调异步返回结果 。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------------- | --------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,存放待导入密钥的别名。 | -| wrappingKeyAlias | string | 是 | 密钥别名,对应密钥用于解密加密的密钥数据。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的加密的密钥数据。 | -| callback | AsyncCallback\ | 是 | 不返回err值时表示接口使用成功,其他时为错误。 | - +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------- | +| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\ | 是 | 回调函数。FALSE代表密钥不存在,TRUE代表密钥存在。 | + **示例:** ```js -import huks from '@ohos.security.huks'; - -var exportWrappingKey; -var alias1 = "importAlias"; -var alias2 = "wrappingKeyAlias"; - -async function TestGenFunc(alias, options) { - try { - await genKey(alias, options) - .then((data) => { - console.info(`callback: generateKeyItem success`); - }) - .catch(error => { - console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} - -function genKey(alias, options) { - return new Promise((resolve, reject) => { - try { - huks.generateKeyItem(alias, options, function (error, data) { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - } catch (error) { - throw(error); +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +try { + huks.isKeyItemExist(keyAlias, emptyOptions, function (error, data) { + if (error) { + console.info(`callback: isKeyItemExist success, data = ${JSON.stringify(data)}`); + } else { + console.error(`callback: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`); } }); +} catch (error) { + console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`); } +``` -async function TestExportFunc(alias, options) { - try { - await exportKey(alias, options) - .then ((data) => { - console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`); - exportWrappingKey = data.outData; - }) - .catch(error => { - console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} +## huks.isKeyItemExist9+ -function exportKey(alias, options) : Promise { - return new Promise((resolve, reject) => { - try { - huks.exportKeyItem(alias, options, function (error, data) { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - } catch (error) { - throw(error); - } - }); -} +isKeyItemExist(keyAlias: string, options: HuksOptions) : Promise\ -async function TestImportWrappedFunc(alias, wrappingAlias, options) { - try { - await importWrappedKey(alias, wrappingAlias, options) - .then ((data) => { - console.info(`callback: importWrappedKeyItem success`); - }) - .catch(error => { - console.error(`callback: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`callback: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} +判断密钥是否存在,使用Promise回调异步返回结果 。 -function importWrappedKey(alias, wrappingAlias, options) { - return new Promise((resolve, reject) => { - try { - huks.importWrappedKeyItem(alias, wrappingAlias, options, function (error, data) { - if (error) { - reject(error); - } else { - resolve(data); - } - }); - } catch (error) { - throw(error); - } - }); -} +**系统能力**:SystemCapability.Security.Huks -async function TestImportWrappedKeyFunc( - alias, - wrappingAlias, - genOptions, - importOptions -) { - await TestGenFunc(wrappingAlias, genOptions); - await TestExportFunc(wrappingAlias, genOptions); +**参数:** - /* 以下操作不需要调用HUKS接口,此处不给出具体实现。 - * 假设待导入的密钥为keyA - * 1.生成ECC公私钥keyB,公钥为keyB_pub, 私钥为keyB_pri - * 2.使用keyB_pri和wrappingAlias密钥中获取的公钥进行密钥协商,协商出共享密钥share_key - * 3.随机生成密钥kek,用于加密keyA,采用AES-GCM加密,加密过程中需要记录:nonce1、aad1、加密后的密文keyA_enc、加密后的tag1。 - * 4.使用share_key加密kek,采用AES-GCM加密,加密过程中需要记录:nonce2、aad2、加密后的密文kek_enc、加密后的tag2。 - * 5.拼接importOptions.inData字段,满足以下格式: - * keyB_pub的长度(4字节) + keyB_pub的数据 + aad2的长度(4字节) + aad2的数据 + - * nonce2的长度(4字节) + nonce2的数据 + tag2的长度(4字节) + tag2的数据 + - * kek_enc的长度(4字节) + kek_enc的数据 + aad1的长度(4字节) + aad1的数据 + - * nonce1的长度(4字节) + nonce1的数据 + tag1的长度(4字节) + tag1的数据 + - * keyA长度占用的内存长度(4字节) + keyA的长度 + keyA_enc的长度(4字节) + keyA_enc的数据 - */ - var inputKey = new Uint8Array([0x02, 0x00, 0x00, 0x00]); - importOptions.inData = inputKey; - await TestImportWrappedFunc(alias, wrappingAlias, importOptions); -} +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------ | +| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -function makeGenerateOptions() { - var properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_ECC - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_UNWRAP - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_IMPORT_KEY_TYPE, - value: huks.HuksImportKeyType.HUKS_KEY_TYPE_KEY_PAIR, - }; - var options = { - properties: properties - }; - return options; -}; +**返回值:** -function makeImportOptions() { - var properties = new Array(); - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_AES - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_CBC - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_NONE - }; - properties[5] = { - tag: huks.HuksTag.HUKS_TAG_UNWRAP_ALGORITHM_SUITE, - value: huks.HuksUnwrapSuite.HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING - }; - var options = { - properties: properties - }; - return options; +| 类型 | 说明 | +| ----------------- | --------------------------------------- | +| Promise\ | Promise对象。FALSE代表密钥不存在,TRUE代表密钥存在。 | + +**示例:** + +```js +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] }; +try { + huks.isKeyItemExist(keyAlias, emptyOptions) + .then ((data) => { + console.info(`promise: isKeyItemExist success, data = ${JSON.stringify(data)}`); + }) + .catch(error => { + console.error(`promise: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`); + }); +} catch (error) { + console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`); +} +``` + +## huks.initSession9+ + +initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +initSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------- | ---- | ---------------------------------------------------- | +| keyAlias | string | 是 | Init操作密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | Init操作的参数集合。 | +| callback | AsyncCallback\<[HuksSessionHandle](#hukssessionhandle)> | 是 | 回调函数。将Init操作操作返回的handle添加到密钥管理系统的回调。 | + + +## huks.initSession9+ + +initSession(keyAlias: string, options: HuksOptions) : Promise\ + +initSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------- | ---- | ------------------------------------------------ | +| keyAlias | string | 是 | Init操作密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | Init参数集合。 | + +**返回值**: + +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksSessionHandle](#hukssessionhandle)> | Promise对象。将Init操作返回的handle添加到密钥管理系统的回调。 | + +## huks.updateSession9+ + +updateSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +updateSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Update的参数集合。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。将Update操作的结果添加到密钥管理系统的回调。 | + + +## huks.updateSession9+ + +updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void + +updateSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | +| token | Uint8Array | 是 | Update操作的token。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。将Update操作的结果添加到密钥管理系统的回调。 | + +## huks.updateSession9+ + +updateSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ + +uupdateSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | +| token | Uint8Array | 否 | Update操作的token。 | + +**返回值**: + +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise<[HuksReturnResult](#huksreturnresult)> | Promise对象。将Update操作的结果添加到密钥管理系统的回调。 | + +## huks.finishSession9+ + +finishSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +finishSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Finish操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | +| token | Uint8Array | 是 | Finish操作的token。 | +| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。将Finish操作的结果添加到密钥管理系统的回调。 | + +## huks.finishSession9+ + +finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void + +finishSession操作密钥接口,使用Callback回调异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Finish操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | +| token | Uint8Array | 是 | Finish操作的token。 | +| callback | AsyncCallback\<[HuksReturnResult](#huksreturnresult)> | 是 | 回调函数。将Finish操作的结果添加到密钥管理系统的回调。 | + + +## huks.finishSession9+ + +finishSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ + +finishSession操作密钥接口,使用Promise方式异步返回结果。huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ----------------------------------------------- | ---- | ----------------------------------- | +| handle | number | 是 | Finish操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Finish操作的参数集合。 | +| token | Uint8Array | 否 | Finish操作的token。 | + +**返回值**: + +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksReturnResult](#huksreturnresult)> | Promise对象,用于获取异步返回结果。 | + + +## huks.abortSession9+ + +abortSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +abort操作密钥接口,使用Callback回调异步返回结果 。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------------------------- | +| handle | number | 是 | Abort操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | +| callback | AsyncCallback\ | 是 | 回调函数。将Abort操作的结果添加到密钥管理系统的回调。 | + +**示例:** + +```js +/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当 + * huks.initSession和huks.updateSession + * 以及huks.finishSession操作中的任一阶段发生错误时, + * 都需要调用huks.abortSession来终止密钥的使用。 + * + * 以下以RSA1024密钥的callback功能使用为例 + */ +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; +} + +let keyAlias = "HuksDemoRSA"; +let properties = new Array(); +let options = { + properties: properties, + inData: new Uint8Array(0) +}; +let handle; +async function generateKey() { + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5 + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + properties[5] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB, + } + + try { + await huks.generateKeyItem(keyAlias, options, function (error, data) { + if (error) { + console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: generateKeyItem success`); + } + }); + } catch (error) { + console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksInit() { + console.log('enter huksInit'); + try { + huks.initSession(keyAlias, options, function (error, data) { + if (error) { + console.error(`callback: initSession failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: initSession success, data = ${JSON.stringify(data)}`); + handle = data.handle; + } + }); + } catch (error) { + console.error(`callback: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksUpdate() { + console.log('enter huksUpdate'); + options.inData = stringToUint8Array("huksHmacTest"); + try { + huks.updateSession(handle, options, function (error, data) { + if (error) { + console.error(`callback: updateSession failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: updateSession success, data = ${JSON.stringify(data)}`); + } + }); + } catch (error) { + console.error(`callback: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksFinish() { + console.log('enter huksFinish'); + options.inData = new Uint8Array(0); + try { + huks.finishSession(handle, options, function (error, data) { + if (error) { + console.error(`callback: finishSession failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: finishSession success, data = ${JSON.stringify(data)}`); + } + }); + } catch (error) { + console.error(`callback: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksAbort() { + console.log('enter huksAbort'); + try { + huks.abortSession(handle, options, function (error, data) { + if (error) { + console.error(`callback: abortSession failed, code: ${error.code}, msg: ${error.message}`); + } else { + console.info(`callback: abortSession success`); + } + }); + } catch (error) { + console.error(`callback: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} +``` + +## huks.abortSession9+ + +abortSession(handle: number, options: HuksOptions) : Promise\; + +abort操作密钥接口,使用Promise方式异步返回结果。 + +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | --------------------------- | ---- | ------------------------------------------- | +| handle | number | 是 | Abort操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | + +**返回值**: + +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\ | Promise对象。将Abort操作的结果添加到密钥管理系统的回调。 | + +**示例:** + +```js +/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当 + * huks.initSession和huks.updateSession + * 以及huks.finishSession操作中的任一阶段发生错误时, + * 都需要调用huks.abortSession来终止密钥的使用。 + * + * 以下以RSA1024密钥的callback功能使用为例 + */ +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; +} + +let keyAlias = "HuksDemoRSA"; +let properties = new Array(); +let options = { + properties: properties, + inData: new Uint8Array(0) +}; +let handle; +async function generateKey() { + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5 + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + properties[5] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB, + } + + try { + await huks.generateKeyItem(keyAlias, options) + .then((data) => { + console.info(`promise: generateKeyItem success`); + }) + .catch(error => { + console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksInit() { + console.log('enter huksInit'); + try { + await huks.initSession(keyAlias, options) + .then ((data) => { + console.info(`promise: initSession success, data = ${JSON.stringify(data)}`); + handle = data.handle; + }) + .catch(error => { + console.error(`promise: initSession key failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksUpdate() { + console.log('enter huksUpdate'); + options.inData = stringToUint8Array("huksHmacTest"); + try { + await huks.updateSession(handle, options) + .then ((data) => { + console.info(`promise: updateSession success, data = ${JSON.stringify(data)}`); + }) + .catch(error => { + console.error(`promise: updateSession failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksFinish() { + console.log('enter huksFinish'); + options.inData = new Uint8Array(0); + try { + await huks.finishSession(handle, options) + .then ((data) => { + console.info(`promise: finishSession success, data = ${JSON.stringify(data)}`); + }) + .catch(error => { + console.error(`promise: finishSession failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} + +async function huksAbort() { + console.log('enter huksAbort'); + try { + await huks.abortSession(keyAlias, options) + .then ((data) => { + console.info(`promise: abortSession success`); + }) + .catch(error => { + console.error(`promise: abortSession failed, code: ${error.code}, msg: ${error.message}`); + }); + } catch (error) { + console.error(`promise: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + } +} +``` + + +## HuksExceptionErrCode9+ + +表示错误码的枚举以及对应的错误信息, 错误码表示错误类型,错误信息展示错误详情。 + +关于错误码的具体信息,可在[错误码参考文档](../errorcodes/errorcode-huks.md)中查看。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 说明 | 错误码 | +| ---------------------------------------------- | --------------------------- | -------- | +| HUKS_ERR_CODE_PERMISSION_FAIL | 权限错误导致失败。 | 201 | +| HUKS_ERR_CODE_ILLEGAL_ARGUMENT | 参数错误导致失败。 | 401 | +| HUKS_ERR_CODE_NOT_SUPPORTED_API | 不支持的API。 | 801 | +| HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED | 不支持的功能/特性。 | 12000001 | +| HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT | 缺少密钥算法参数。 | 12000002 | +| HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT | 无效密钥算法参数。 | 12000003 | +| HUKS_ERR_CODE_FILE_OPERATION_FAIL | 文件操作失败。 | 12000004 | +| HUKS_ERR_CODE_COMMUNICATION_FAIL | 通信失败。 | 12000005 | +| HUKS_ERR_CODE_CRYPTO_FAIL | 算法库操作失败。 | 12000006 | +| HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED | 密钥访问失败-密钥访问失效。 | 12000007 | +| HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED | 密钥访问失败-密钥认证失败。 | 12000008 | +| HUKS_ERR_CODE_KEY_AUTH_TIME_OUT | 密钥访问失败-密钥访问超时。 | 12000009 | +| HUKS_ERR_CODE_SESSION_LIMIT | 密钥操作会话数已达上限。 | 12000010 | +| HUKS_ERR_CODE_ITEM_NOT_EXIST | 目标对象不存在。 | 12000011 | +| HUKS_ERR_CODE_EXTERNAL_ERROR | 外部错误。 | 12000012 | +| HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST | 缺失所需凭据。 | 12000013 | +| HUKS_ERR_CODE_INSUFFICIENT_MEMORY | 内存不足。 | 12000014 | +| HUKS_ERR_CODE_CALL_SERVICE_FAILED | 调用其他系统服务失败。 | 12000015 | + +## HuksKeyPurpose + +表示密钥用途。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------------------ | ---- | -------------------------------- | +| HUKS_KEY_PURPOSE_ENCRYPT | 1 | 表示密钥用于对明文进行加密操作。 | +| HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密钥用于对密文进行解密操作。 | +| HUKS_KEY_PURPOSE_SIGN | 4 | 表示密钥用于对数据进行签名。 | +| HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密钥用于验证签名后的数据。 | +| HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密钥用于派生密钥。 | +| HUKS_KEY_PURPOSE_WRAP | 32 | 表示密钥用于加密导出。 | +| HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密钥加密导入。 | +| HUKS_KEY_PURPOSE_MAC | 128 | 表示密钥用于生成mac消息验证码。 | +| HUKS_KEY_PURPOSE_AGREE | 256 | 表示密钥用于进行密钥协商。 | + +## HuksKeyDigest + +表示摘要算法。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ---------------------- | ---- | ---------------------------------------- | +| HUKS_DIGEST_NONE | 0 | 表示无摘要算法。 | +| HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。 | +| HUKS_DIGEST_SM39+ | 2 | 表示SM3摘要算法。 | +| HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。 | +| HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。 | +| HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。 | +| HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。 | +| HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。 | + +## HuksKeyPadding + +表示补齐算法。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ---------------------- | ---- | ---------------------------------------- | +| HUKS_PADDING_NONE | 0 | 表示不使用补齐算法。 | +| HUKS_PADDING_OAEP | 1 | 表示使用OAEP补齐算法。 | +| HUKS_PADDING_PSS | 2 | 表示使用PSS补齐算法。 | +| HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5补齐算法。 | +| HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5补齐算法。 | +| HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7补齐算法。 | + +## HuksCipherMode + +表示加密模式。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------- | ---- | --------------------- | +| HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。 | +| HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。 | +| HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。 | +| HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。 | +| HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。 | +| HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。 | + +## HuksKeySize + +表示密钥长度。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ---------------------------------- | ---- | ------------------------------------------ | +| HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密钥长度为512bit。 | +| HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密钥长度为768bit。 | +| HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密钥长度为1024bit。 | +| HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密钥长度为2048bit。 | +| HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密钥长度为3072bit。 | +| HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密钥长度为4096bit。 | +| HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密钥长度为224bit。 | +| HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密钥长度为256bit。 | +| HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密钥长度为384bit。 | +| HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密钥长度为521bit。 | +| HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密钥长度为128bit。 | +| HUKS_AES_KEY_SIZE_192 | 196 | 表示使用AES算法的密钥长度为196bit。 | +| HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密钥长度为256bit。 | +| HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密钥长度为512bit。 | +| HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密钥长度为256bit。 | +| HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密钥长度为2048bit。 | +| HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密钥长度为3072bit。 | +| HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密钥长度为4096bit。 | +| HUKS_SM2_KEY_SIZE_2569+ | 256 | 表示SM2算法的密钥长度为256bit。 | +| HUKS_SM4_KEY_SIZE_1289+ | 128 | 表示SM4算法的密钥长度为128bit。 | + +## HuksKeyAlg + +表示密钥使用的算法。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------------------- | ---- | --------------------- | +| HUKS_ALG_RSA | 1 | 表示使用RSA算法。 | +| HUKS_ALG_ECC | 2 | 表示使用ECC算法。 | +| HUKS_ALG_DSA | 3 | 表示使用DSA算法。 | +| HUKS_ALG_AES | 20 | 表示使用AES算法。 | +| HUKS_ALG_HMAC | 50 | 表示使用HMAC算法。 | +| HUKS_ALG_HKDF | 51 | 表示使用HKDF算法。 | +| HUKS_ALG_PBKDF2 | 52 | 表示使用PBKDF2算法。 | +| HUKS_ALG_ECDH | 100 | 表示使用ECDH算法。 | +| HUKS_ALG_X25519 | 101 | 表示使用X25519算法。 | +| HUKS_ALG_ED25519 | 102 | 表示使用ED25519算法。 | +| HUKS_ALG_DH | 103 | 表示使用DH算法。 | +| HUKS_ALG_SM29+ | 150 | 表示使用SM2算法。 | +| HUKS_ALG_SM39+ | 151 | 表示使用SM3算法。 | +| HUKS_ALG_SM49+ | 152 | 表示使用SM4算法。 | + +## HuksKeyGenerateType + +表示生成密钥的类型。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------------------------ | ---- | ---------------- | +| HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默认生成的密钥。 | +| HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密钥。 | +| HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 协商生成的密钥。 | + +## HuksKeyFlag + +表示密钥的产生方式。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| -------------------------- | ---- | ------------------------------------ | +| HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通过导入公钥接口导入的密钥。 | +| HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通过生成密钥接口生成的密钥。 | +| HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通过生成密钥协商接口生成的密钥。 | +| HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通过生成密钥派生接口生成的密钥。 | + +## HuksKeyStorageType + +表示密钥存储方式。 + +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ----------------------- | ---- | ------------------------------ | +| HUKS_STORAGE_TEMP | 0 | 表示通过本地直接管理密钥。 | +| HUKS_STORAGE_PERSISTENT | 1 | 表示通过HUKS service管理密钥。 | + +## HuksSendType + +表示发送Tag的方式。 -function huksImportWrappedKey() { - var genOptions = makeGenerateOptions(); - var importOptions = makeImportOptions(); - TestImportWrappedKeyFunc( - alias1, - alias2, - genOptions, - importOptions - ); -} -``` +**系统能力**:SystemCapability.Security.Huks -## huks.importWrappedKeyItem9+ +| 名称 | 值 | 说明 | +| -------------------- | ---- | ----------------- | +| HUKS_SEND_TYPE_ASYNC | 0 | 表示异步发送TAG。 | +| HUKS_SEND_TYPE_SYNC | 1 | 表示同步发送TAG。 | -importWrappedKeyItem(keyAlias: string, wrappingKeyAlias: string, options: HuksOptions) : Promise\ +## HuksUnwrapSuite9+ -导入加密密钥,使用Promise方式异步返回结果。 +表示导入加密密钥的算法套件。 **系统能力**:SystemCapability.Security.Huks -**参数:** +| 名称 | 值 | 说明 | +| ---------------------------------------------- | ---- | ----------------------------------------------------- | +| HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING | 1 | 导入加密密钥时,X25519密钥协商后使用AES-256 GCM加密。 | +| HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING | 2 | 导入加密密钥时,ECDH密钥协商后使用AES-256 GCM加密。 | -| 参数名 | 类型 | 必填 | 说明 | -| ---------------- | --------------------------- | ---- | --------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,存放待导入密钥的别名。 | -| wrappingKeyAlias | string | 是 | 密钥别名,对应密钥用于解密加密的密钥数据。 | -| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的加密的密钥数据。 | +## HuksImportKeyType9+ -**示例:** +表示导入密钥的密钥类型,默认为导入公钥,导入对称密钥时不需要该字段。 -```js -/* 处理流程与callback类似,主要差异点为如下函数: */ -async function TestImportWrappedFunc(alias, wrappingAlias, options) { - try { - await huks.importWrappedKeyItem(alias, wrappingAlias, options) - .then ((data) => { - console.info(`promise: importWrappedKeyItem success`); - }) - .catch(error => { - console.error(`promise: importWrappedKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: importWrappedKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } -} -``` +**系统能力**:SystemCapability.Security.Huks -## huks.exportKey(deprecated) +| 名称 | 值 | 说明 | +| ------------------------- | ---- | ------------------------------ | +| HUKS_KEY_TYPE_PUBLIC_KEY | 0 | 表示导入的密钥类型为公钥。 | +| HUKS_KEY_TYPE_PRIVATE_KEY | 1 | 表示导入的密钥类型为私钥。 | +| HUKS_KEY_TYPE_KEY_PAIR | 2 | 表示导入的密钥类型为公私钥对。 | -exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +## HuksUserAuthType9+ -导出密钥,使用Callback方式回调异步返回的结果。 +表示用户认证类型。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.exportKeyItem9+](#huksexportkeyitem9)替代。 +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------------------------- | ---- | ------------------------- | +| HUKS_USER_AUTH_TYPE_FINGERPRINT | 1 | 表示用户认证类型为指纹。 | +| HUKS_USER_AUTH_TYPE_FACE | 2 | 表示用户认证类型为人脸 。 | +| HUKS_USER_AUTH_TYPE_PIN | 4 | 表示用户认证类型为PIN码。 | + +## HuksAuthAccessType9+ + +表示安全访问控制类型。 **系统能力**:SystemCapability.Security.Huks -**参数:** +| 名称 | 值 | 说明 | +| --------------------------------------- | ---- | ------------------------------------------------ | +| HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD | 1 | 表示安全访问控制类型为清除密码后密钥无效。 | +| HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL | 2 | 表示安全访问控制类型为新录入生物特征后密钥无效。 | -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | +## HuksChallengeType9+ -**示例:** +表示密钥使用时生成challenge的类型。 -```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -huks.exportKey(keyAlias, emptyOptions, function (err, data){}); -``` +**系统能力**:SystemCapability.Security.Huks -## huks.exportKey(deprecated) +| 名称 | 值 | 说明 | +| ------------------------------- | ---- | ------------------------------ | +| HUKS_CHALLENGE_TYPE_NORMAL | 0 | 表示challenge为普通类型,默认32字节。 | +| HUKS_CHALLENGE_TYPE_CUSTOM | 1 | 表示challenge为用户自定义类型。支持使用多个密钥仅一次认证。 | +| HUKS_CHALLENGE_TYPE_NONE | 2 | 表示免challenge类型。 | -exportKey(keyAlias: string, options: HuksOptions) : Promise\ +## HuksChallengePosition9+ -导出密钥,使用Promise方式回调异步返回的结果。 +表示challenge类型为用户自定义类型时,生成的challenge有效长度仅为8字节连续的数据,且仅支持4种位置 。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.exportKeyItem9+](#huksexportkeyitem9-1))替代。 +**系统能力**:SystemCapability.Security.Huks + +| 名称 | 值 | 说明 | +| ------------------------------- | ---- | ------------------------------ | +| HUKS_CHALLENGE_POS_0 | 0 | 表示0~7字节为当前密钥的有效challenge。 | +| HUKS_CHALLENGE_POS_1 | 1 | 表示8~15字节为当前密钥的有效challenge。 | +| HUKS_CHALLENGE_POS_2 | 2 | 表示16~23字节为当前密钥的有效challenge。 | +| HUKS_CHALLENGE_POS_3 | 3 | 表示24~31字节为当前密钥的有效challenge。 | + +## HuksSecureSignType9+ + +表示生成或导入密钥时,指定该密钥的签名类型。 **系统能力**:SystemCapability.Security.Huks -**参数:** +| 名称 | 值 | 说明 | +| ------------------------------ | ---- | ------------------------------------------------------------ | +| HUKS_SECURE_SIGN_WITH_AUTHINFO | 1 | 表示签名类型为携带认证信息。生成或导入密钥时指定该字段,则在使用密钥进行签名时,对待签名的数据添加认证信息后进行签名。 | -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +## HuksTagType -**返回值:** +表示Tag的数据类型。 -| 类型 | 说明 | -| ----------------------------------- | ------------------------------------------------------------ | -| Promise\<[HuksResult](#huksresult)> | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | +**系统能力**:SystemCapability.Security.Huks -**示例:** +| 名称 | 值 | 说明 | +| --------------------- | ------- | --------------------------------------- | +| HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag类型。 | +| HUKS_TAG_TYPE_INT | 1 << 28 | 表示该Tag的数据类型为int类型的number。 | +| HUKS_TAG_TYPE_UINT | 2 << 28 | 表示该Tag的数据类型为uint类型的number。 | +| HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示该Tag的数据类型为bigint。 | +| HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示该Tag的数据类型为boolean。 | +| HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示该Tag的数据类型为Uint8Array。 | -```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] -}; -var result = huks.exportKey(keyAlias, emptyOptions); -``` +## HuksTag -## huks.exportKeyItem9+ +表示调用参数的Tag。 -exportKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +**系统能力**:SystemCapability.Security.Huks -导出密钥,使用Callback方式回调异步返回的结果。 +| 名称 | 值 | 说明 | +| -------------------------------------------- | ---------------------------------------- | -------------------------------------- | +| HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID \| 0 | 表示非法的Tag。 | +| HUKS_TAG_ALGORITHM | HUKS_TAG_TYPE_UINT \| 1 | 表示算法的Tag。 | +| HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT \| 2 | 表示密钥用途的Tag。 | +| HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 3 | 表示密钥长度的Tag。 | +| HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT \| 4 | 表示摘要算法的Tag。 | +| HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT \| 5 | 表示补齐算法的Tag。 | +| HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT \| 6 | 表示加密模式的Tag。 | +| HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 7 | 表示密钥类型的Tag。 | +| HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 8 | 表示附加身份验证数据的Tag。 | +| HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 9 | 表示密钥加解密的字段。 | +| HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10 | 表示密钥初始化的向量。 | +| HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 11 | 表示密钥派生时的info。 | +| HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 12 | 表示密钥派生时的盐值。 | +| HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES \| 13 | 表示密钥派生时的password。 | +| HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT \| 14 | 表示密钥派生时的迭代次数。 | +| HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 15 | 表示生成密钥类型的Tag。 | +| HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 16 | 表示密钥派生时的主密钥。 | +| HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES \| 17 | 表示密钥派生时的派生因子。 | +| HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 18 | 表示密钥派生时的算法类型。 | +| HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT \| 19 | 表示密钥协商时的算法类型。 | +| HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 20 | 表示密钥协商时的公钥别名。 | +| HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 21 | 表示密钥协商时的私钥别名。 | +| HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 22 | 表示密钥协商时的公钥。 | +| HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 23 | 表示密钥别名。 | +| HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT \| 24 | 表示派生密钥的大小。 | +| HUKS_TAG_IMPORT_KEY_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 25 | 表示导入的密钥类型。 | +| HUKS_TAG_UNWRAP_ALGORITHM_SUITE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 26 | 表示导入加密密钥的套件。 | +| HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 201 | 预留。 | +| HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 202 | 预留。 | +| HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 203 | 预留。 | +| HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG \| 204 | 预留。 | +| HUKS_TAG_ALL_USERS | ksTagType.HUKS_TAG_TYPE_BOOL \| 301 | 预留。 | +| HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT \| 302 | 预留。 | +| HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL \| 303 | 预留。 | +| HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 304 | 表示用户认证类型。从[HuksUserAuthType](#huksuserauthtype9)中选择,需要与安全访问控制类型同时设置。支持同时指定两种用户认证类型,如:安全访问控制类型指定为HKS_SECURE_ACCESS_INVALID_NEW_BIO_ENROLL时,密钥访问认证类型可以指定以下三种: HKS_USER_AUTH_TYPE_FACE 、HKS_USER_AUTH_TYPE_FINGERPRINT、HKS_USER_AUTH_TYPE_FACE \| HKS_USER_AUTH_TYPE_FINGERPRINT | +| HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT \| 305 | 预留。 | +| HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES \| 306 | 预留。 | +| HUKS_TAG_KEY_AUTH_ACCESS_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 307 | 表示安全访问控制类型。从[HuksAuthAccessType](#huksauthaccesstype9)中选择,需要和用户认证类型同时设置。 | +| HUKS_TAG_KEY_SECURE_SIGN_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 308 | 表示生成或导入密钥时,指定该密钥的签名类型。 | +| HUKS_TAG_CHALLENGE_TYPE9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 309 | 表示密钥使用时生成的challenge类型。从[HuksChallengeType](#hukschallengetype9)中选择 | +| HUKS_TAG_CHALLENGE_POS9+ | HuksTagType.HUKS_TAG_TYPE_UINT \| 310 | 表示challenge类型为用户自定义类型时,huks产生的challenge有效长度仅为8字节连续的数据。从[HuksChallengePosition](#hukschallengeposition9)中选择。 | +| HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 501 | 表示attestation时的挑战值。 | +| HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 502 | 表示attestation时拥有该密钥的application的Id。 | +| HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES \| 503 | 表示设备的品牌。 | +| HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES \| 504 | 表示设备的设备ID。 | +| HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES \| 505 | 表示设备的产品名。 | +| HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 506 | 表示设备的SN号。 | +| HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES \| 507 | 表示设备的IMEI号。 | +| HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 508 | 表示设备的MEID号。 | +| HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES \| 509 | 表示设备的制造商。 | +| HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES \| 510 | 表示设备的型号。 | +| HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES \| 511 | 表示attestation时的密钥别名。 | +| HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 512 | 表示设备的SOCID。 | +| HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 513 | 表示设备的UDID。 | +| HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 514 | 表示attestation时的安全凭据。 | +| HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES \| 515 | 表示attestation时的版本号。 | +| HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1001 | 表示是否使用生成key时传入的别名的Tag。 | +| HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1002 | 表示密钥存储方式的Tag。 | +| HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1003 | 预留。 | +| HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1004 | 预留。 | +| HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1005 | 预留。 | +| HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT \| 1006 | 预留。 | +| HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT \| 1007 | 表示密钥标志的Tag。 | +| HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT \| 1008 | 预留。 | +| HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL \| 1009 | 预留。 | +| HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES \| 1010 | 预留。 | +| HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT \| 1011 | 预留。 | +| HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10001 | 表示进程名称的Tag。 | +| HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10002 | 预留。 | +| HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10003 | 预留。 | +| HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT \| 10004 | 预留。 | +| HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10005 | 预留。 | +| HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10006 | 预留。 | +| HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10007 | 表示密钥版本的Tag。 | +| HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT \| 10008 | 预留。 | +| HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES \| 10009 | 预留。 | +| HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG \| 10010 | 预留。 | +| HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT \| 10101 | 表示操作系统版本的Tag。 | +| HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT \| 10102 | 表示操作系统补丁级别的Tag。 | +| HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20001 | 预留。 | +| HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20002 | 预留。 | +| HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES \| 20003 | 预留。 | + +## huks.generateKey(deprecated) + +generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +生成密钥,使用Callback回调异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.generateKeyItem9+](#huksgeneratekeyitem9)替代。 **系统能力**:SystemCapability.Security.Huks -**参数:** +**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其余结果请参考HuksResult进行错误码查询。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +/* 以生成RSA512密钥为例 */ +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512 }; -try { - huks.exportKeyItem(keyAlias, emptyOptions, function (error, data) { - if (error) { - console.error(`callback: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: exportKeyItem success, data = ${JSON.stringify(data)}`); - } - }); -} catch (error) { - console.error(`callback: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); -} +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: +huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | +huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_OAEP +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 +}; +let options = { + properties: properties +}; +huks.generateKey(keyAlias, options, function (err, data){}); ``` -## huks.exportKeyItem9+ +## huks.generateKey(deprecated) -exportKeyItem(keyAlias: string, options: HuksOptions) : Promise\ +generateKey(keyAlias: string, options: HuksOptions) : Promise\ -导出密钥,使用Promise方式回调异步返回的结果。 +生成密钥,使用Promise方式异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.generateKeyItem9+](#huksgeneratekeyitem9-1)替代。 **系统能力**:SystemCapability.Security.Huks -**参数:** +**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | -------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------ | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于存放生成key所需TAG。 | -**返回值:** +**返回值**: -| 类型 | 说明 | -| ---------------------------------------------- | ------------------------------------------------------------ | -| Promise<[HuksReturnResult](#huksreturnresult)> | 不返回err值时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +/* 以生成ECC256密钥为例 */ +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_ECC }; -try { - huks.exportKeyItem(keyAlias, emptyOptions) - .then ((data) => { - console.info(`promise: exportKeyItem success, data = ${JSON.stringify(data)}`); - }) - .catch(error => { - console.error(`promise: exportKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); -} catch (error) { - console.error(`promise: exportKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); -} +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: +huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | +huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 +}; +let options = { + properties: properties +}; +let result = huks.generateKey(keyAlias, options); ``` -## huks.getKeyProperties(deprecated) -getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +## huks.deleteKey(deprecated) -获取密钥属性,使用Callback回调异步返回结果。 +deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -> **说明:** 从API Version 9开始废弃,建议使用[huks.getKeyItemProperties9+](#huksgetkeyitemproperties9)替代。 +删除密钥,使用Callback回调异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.deleteKeyItem9+](#huksdeletekeyitem9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | -------------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { +/* 此处options选择emptyOptions传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { properties: [] }; -huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){}); +huks.deleteKey(keyAlias, emptyOptions, function (err, data) {}); ``` -## huks.getKeyProperties(deprecated) +## huks.deleteKey(deprecated) -getKeyProperties(keyAlias: string, options: HuksOptions) : Promise\ +deleteKey(keyAlias: string, options: HuksOptions) : Promise\ -获取密钥属性,使用Promise回调异步返回结果。 +删除密钥,使用Promise方式异步返回结果。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.getKeyItemProperties9+](#huksgetkeyitemproperties9-1)替代。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.deleteKeyItem9+](#huksdeletekeyitem9-1)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ----------------------------------------------------- | +| keyAlias | string | 是 | 密钥别名,应为生成key时传入的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | **返回值:** -| 类型 | 说明 | -| ------------------ | ------------------------------------------------------------ | -| Promise\<[HuksResult](#huksoptions)> | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 | +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { +/* 此处options选择emptyOptions传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { properties: [] }; -var result = huks.getKeyProperties(keyAlias, emptyOptions); +let result = huks.deleteKey(keyAlias, emptyOptions); ``` -## huks.getKeyItemProperties9+ -getKeyItemProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +## huks.importKey(deprecated) -获取密钥属性,使用Callback回调异步返回结果。 +importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +导入明文密钥,使用Callback方式回调异步返回结果 。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.importKeyItem9+](#huksimportkeyitem9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | ------------------------------------------------- | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +/* 以导入AES256密钥为例 */ +let plainTextSize32 = makeRandomArr(32); +function makeRandomArr(size) { + let arr = new Uint8Array(size); + for (let i = 0; i < size; i++) { + arr[i] = Math.floor(Math.random() * 10); + } + return arr; }; -try { - huks.getKeyItemProperties(keyAlias, emptyOptions, function (error, data) { - if (error) { - console.error(`callback: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: getKeyItemProperties success, data = ${JSON.stringify(data)}`); - } - }); -} catch (error) { - console.error(`callback: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`); -} +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: +huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +let options = { + properties: properties, + inData: plainTextSize32 +}; +huks.importKey(keyAlias, options, function (err, data){}); ``` -## huks.getKeyItemProperties9+ +## huks.importKey(deprecated) -getKeyItemProperties(keyAlias: string, options: HuksOptions) : Promise\ +importKey(keyAlias: string, options: HuksOptions) : Promise\ -获取密钥属性,使用Promise回调异步返回结果。 +导入明文密钥,使用Promise方式异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.importKeyItem9+](#huksimportkeyitem9-1)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | -------------------------------------------- | -| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------ | +| keyAlias | string | 是 | 密钥别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 用于导入时所需TAG和需要导入的密钥。 | **返回值:** -| 类型 | 说明 | -| ----------------------------------------------- | ------------------------------------------------------------ | -| Promise\<[HuksReturnResult](#huksreturnresult)> | 不返回err值时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 | +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js -/* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +/* 以导入AES128为例 */ +let plainTextSize32 = makeRandomArr(32); + +function makeRandomArr(size) { + let arr = new Uint8Array(size); + for (let i = 0; i < size; i++) { + arr[i] = Math.floor(Math.random() * 10); + } + return arr; }; -try { - huks.getKeyItemProperties(keyAlias, emptyOptions) - .then ((data) => { - console.info(`promise: getKeyItemProperties success, data = ${JSON.stringify(data)}`); - }) - .catch(error => { - console.error(`promise: getKeyItemProperties failed, code: ${error.code}, msg: ${error.message}`); - }); -} catch (error) { - console.error(`promise: getKeyItemProperties input arg invalid, code: ${error.code}, msg: ${error.message}`); -} + +/*第一步:生成密钥*/ +let keyAlias = 'keyAlias'; +let properties = new Array(); +properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_AES +}; +properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128 +}; +properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT +}; +properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7 +}; +properties[4] = { + tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, + value: huks.HuksCipherMode.HUKS_MODE_ECB +}; +let huksoptions = { + properties: properties, + inData: plainTextSize32 +}; +let result = huks.importKey(keyAlias, huksoptions); ``` -## huks.isKeyExist(deprecated) -isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +## huks.exportKey(deprecated) + +exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +导出密钥,使用Callback方式回调异步返回的结果。 -判断密钥是否存在,使用Callback回调异步返回结果 。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.exportKeyItem9+](#huksexportkeyitem9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------- | ---- | ------------------------------------- | -| keyAlias | string | 是 | 所需查找的密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\ | 是 | FALSE代表密钥不存在,TRUE代表密钥存在。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | **示例:** ```js /* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { +let keyAlias = 'keyAlias'; +let emptyOptions = { properties: [] }; -huks.isKeyExist(keyAlias, emptyOptions, function (err, data){}); +huks.exportKey(keyAlias, emptyOptions, function (err, data){}); ``` -## huks.isKeyExist(deprecated) +## huks.exportKey(deprecated) -isKeyExist(keyAlias: string, options: HuksOptions) : Promise\ +exportKey(keyAlias: string, options: HuksOptions) : Promise\ -判断密钥是否存在,使用Promise回调异步返回结果 。 +导出密钥,使用Promise方式回调异步返回的结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.exportKeyItem9+](#huksexportkeyitem9-1))替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------- | ---- | -------------------------------- | -| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | | options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | **返回值:** -| 类型 | 说明 | -| ----------------- | --------------------------------------- | -| Promise\ | FALSE代表密钥不存在,TRUE代表密钥存在。 | +| 类型 | 说明 | +| ----------------------------------- | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksresult)> | Promise对象。返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。outData:返回从密钥中导出的公钥。 | **示例:** ```js /* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { +let keyAlias = 'keyAlias'; +let emptyOptions = { properties: [] }; -var result = huks.isKeyExist(keyAlias, emptyOptions); +let result = huks.exportKey(keyAlias, emptyOptions); ``` -## huks.isKeyItemExist9+ -isKeyItemExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void +## huks.getKeyProperties(deprecated) -判断密钥是否存在,使用Callback回调异步返回结果 。 +getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void + +获取密钥属性,使用Callback回调异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.getKeyItemProperties9+](#huksgetkeyitemproperties9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------- | -| keyAlias | string | 是 | 所需查找的密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -| callback | AsyncCallback\ | 是 | FALSE代表密钥不存在,TRUE代表密钥存在。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。 | **示例:** ```js /* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] }; -try { - huks.isKeyItemExist(keyAlias, emptyOptions, function (error, data) { - if (error) { - console.info(`callback: isKeyItemExist success, data = ${JSON.stringify(data)}`); - } else { - console.error(`callback: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`); - } - }); -} catch (error) { - console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`); -} +huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){}); ``` -## huks.isKeyItemExist9+ +## huks.getKeyProperties(deprecated) -isKeyItemExist(keyAlias: string, options: HuksOptions) : Promise\ +getKeyProperties(keyAlias: string, options: HuksOptions) : Promise\ -判断密钥是否存在,使用Promise回调异步返回结果 。 +获取密钥属性,使用Promise回调异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.getKeyItemProperties9+](#huksgetkeyitemproperties9-1)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------ | -| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | ------------------------------------------------------------ | +| keyAlias | string | 是 | 密钥别名,应与所用密钥生成时使用的别名相同。 | | options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | **返回值:** -| 类型 | 说明 | -| ----------------- | --------------------------------------- | -| Promise\ | FALSE代表密钥不存在,TRUE代表密钥存在。 | +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\<[HuksResult](#huksoptions)> | Promise对象。errorCode:返回HUKS_SUCCESS时表示接口使用成功,其他时为错误。properties:返回值为生成密钥时所需参数。 | **示例:** ```js /* 此处options选择emptyOptions来传空 */ -var keyAlias = 'keyAlias'; -var emptyOptions = { - properties: [] +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] }; -try { - huks.isKeyItemExist(keyAlias, emptyOptions) - .then ((data) => { - console.info(`promise: isKeyItemExist success, data = ${JSON.stringify(data)}`); - }) - .catch(error => { - console.error(`promise: isKeyItemExist failed, code: ${error.code}, msg: ${error.message}`); - }); -} catch (error) { - console.error(`promise: isKeyItemExist input arg invalid, code: ${error.code}, msg: ${error.message}`); -} +let result = huks.getKeyProperties(keyAlias, emptyOptions); ``` -## huks.init(deprecated) - -init(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -init操作密钥接口,使用Callback回调异步返回结果 。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.initSession9+](#huksinitsession9-1)替代。 - -系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------- | ---- | ------------------------------------- | -| keyAlias | string | 是 | Init操作密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | Init操作的参数集合。 | -| callback | AsyncCallback\<[HuksHandle](#hukshandle)> | 是 | 将Init操作操作返回的handle添加到密钥管理系统的回调。 | - -## huks.init(deprecated) +## huks.isKeyExist(deprecated) -init(keyAlias: string, options: HuksOptions) : Promise\ +isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -init操作密钥接口,使用Promise方式异步返回结果。 +判断密钥是否存在,使用Callback回调异步返回结果 。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.initSession9+](#huksinitsession9-1)替代。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.isKeyItemExist9+](#huksiskeyitemexist9)替代。 -系统能力**:SystemCapability.Security.Huks +**系统能力**:SystemCapability.Security.Huks **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------- | ---- | ------------------------------------- | -| keyAlias | string | 是 | Init操作密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | Init参数集合。 | -| promise | Promise\<[HuksHandle](#hukshandle)> | 是 | 将Init操作返回的handle添加到密钥管理系统的回调。 | - -## huks.initSession9+ - -initSession(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void - -initSession操作密钥接口,使用Callback回调异步返回结果 。 - -系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------------------------- | ---- | ---------------------------------------------------- | -| keyAlias | string | 是 | Init操作密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | Init操作的参数集合。 | -| callback | AsyncCallback\<[HuksSessionHandle](#hukssessionhandle)> | 是 | 将Init操作操作返回的handle添加到密钥管理系统的回调。 | - - -## huks.initSession9+ - -initSession(keyAlias: string, options: HuksOptions) : Promise\ - -initSession操作密钥接口,使用Promise方式异步返回结果。 - -系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------------------- | ---- | ------------------------------------------------ | -| keyAlias | string | 是 | Init操作密钥的别名。 | -| options | [HuksOptions](#huksoptions) | 是 | Init参数集合。 | -| promise | Promise\<[HuksSessionHandle](#hukssessionhandle)> | 是 | 将Init操作返回的handle添加到密钥管理系统的回调。 | - -## huks.update(deprecated) - -update(handle: number, options: HuksOptions, callback: AsyncCallback\) : void - -update操作密钥接口,使用Callback回调异步返回结果 。 - -**系统能力**:SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Update的参数集合。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | - -## huks.update(deprecated) - -update(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void - -update操作密钥接口,使用Callback回调异步返回结果 。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksupdatesession9)替代。 - -**系统能力**: SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| token | Uint8Array | 否 | Update操作的token。 | -| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | - -## huks.update(deprecated) - -update(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ - -update操作密钥接口,使用Promise方式异步返回结果。 - -> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksupdatesession9-1)替代。 - -**系统能力**: SystemCapability.Security.Huks - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ----------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| token | Uint8Array | 否 | Update操作的token。 | -| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | -| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | - -## huks.updateSession9+ - -updateSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void - -updateSession操作密钥接口,使用Callback回调异步返回结果 。 - -**系统能力**:SystemCapability.Security.Huks +| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | +| callback | AsyncCallback\ | 是 | 回调函数。FALSE代表密钥不存在,TRUE代表密钥存在。 | -**参数:** +**示例:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Update的参数集合。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | +```js +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +huks.isKeyExist(keyAlias, emptyOptions, function (err, data){}); +``` +## huks.isKeyExist(deprecated) -## huks.updateSession9+ +isKeyExist(keyAlias: string, options: HuksOptions) : Promise\ -updateSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void +判断密钥是否存在,使用Promise回调异步返回结果 。 -updateSession操作密钥接口,使用Callback回调异步返回结果 。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.isKeyItemExist9+](#huksiskeyitemexist9-1)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | -| token | Uint8Array | 是 | Update操作的token。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | - -## huks.updateSession9+ - -updateSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------- | ---- | -------------------------------- | +| keyAlias | string | 是 | 所需查找的密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | 空对象(此处传空即可)。 | -uupdateSession操作密钥接口,使用Promise方式异步返回结果。 +**返回值:** -**系统能力**:SystemCapability.Security.Huks +| 类型 | 说明 | +| ----------------- | --------------------------------------- | +| Promise\ | Promise对象。FALSE代表密钥不存在,TRUE代表密钥存在。 | -**参数:** +**示例:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ---------------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Update操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | -| token | Uint8Array | 否 | Update操作的token。 | -| promise | Promise<[HuksReturnResult](#huksreturnresult)> | 是 | 将Update操作的结果添加到密钥管理系统的回调。 | +```js +/* 此处options选择emptyOptions来传空 */ +let keyAlias = 'keyAlias'; +let emptyOptions = { + properties: [] +}; +let result = huks.isKeyExist(keyAlias, emptyOptions); +``` -## huks.finish(deprecated) +## huks.init(deprecated) -finish(handle: number, options: HuksOptions, callback: AsyncCallback\) : void +init(keyAlias: string, options: HuksOptions, callback: AsyncCallback\) : void -finish操作密钥接口,使用Callback回调异步返回结果 。 +init操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.finishSession9+](#huksfinishsession9)替代。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.initSession9+](#huksinitsession9-1)替代。 **系统能力**:SystemCapability.Security.Huks @@ -2233,18 +2480,18 @@ finish操作密钥接口,使用Callback回调异步返回结果 。 | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------- | ---- | ------------------------------------- | -| handle | number | 是 | Finish操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。 | +| keyAlias | string | 是 | Init操作密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | Init操作的参数集合。 | +| callback | AsyncCallback\<[HuksHandle](#hukshandle)> | 是 | 回调函数。将Init操作操作返回的handle添加到密钥管理系统的回调。 | -## huks.finish(deprecated) +## huks.init(deprecated) -finish(handle: number, options: HuksOptions) : Promise\ +init(keyAlias: string, options: HuksOptions) : Promise\ -finish操作密钥接口,使用Promise方式异步返回结果。 +init操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksfinishsession9-1)替代。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.initSession9+](#huksinitsession9-1)替代。 **系统能力**:SystemCapability.Security.Huks @@ -2252,180 +2499,85 @@ finish操作密钥接口,使用Promise方式异步返回结果。 | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------- | ---- | ------------------------------------- | -| handle | number | 是 | Finish操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Finish操作的参数集合。 | -| promise | Promise\<[HuksResult](#huksresult)> | 是 | promise实例,用于获取异步返回结果。 | - -## huks.finishSession9+ - -finishSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void +| keyAlias | string | 是 | Init操作密钥的别名。 | +| options | [HuksOptions](#huksoptions) | 是 | Init参数集合。 | -finishSession操作密钥接口,使用Callback回调异步返回结果 。 +**返回值**: -**系统能力**:SystemCapability.Security.Huks +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksHandle](#hukshandle)> | Promise对象。将Init操作返回的handle添加到密钥管理系统的回调。 | -**参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Finish操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | -| token | Uint8Array | 是 | Finish操作的token。 | -| callback | AsyncCallback<[HuksReturnResult](#huksreturnresult)> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。 | +## huks.update(deprecated) -## huks.finishSession9+ +update(handle: number, options: HuksOptions, callback: AsyncCallback\) : void -finishSession(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void +update操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -finishSession操作密钥接口,使用Callback回调异步返回结果 。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksupdatesession9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------------------------------- | ---- | -------------------------------------------- | -| handle | number | 是 | Finish操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | -| token | Uint8Array | 是 | Finish操作的token。 | -| callback | AsyncCallback\<[HuksReturnResult](#huksreturnresult)> | 是 | 将Finish操作的结果添加到密钥管理系统的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Update的参数集合。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。将Update操作的结果添加到密钥管理系统的回调。 | +## huks.update(deprecated) -## huks.finishSession9+ +update(handle: number, options: HuksOptions, token: Uint8Array, callback: AsyncCallback\) : void -finishSession(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ +update操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -finishSession操作密钥接口,使用Promise方式异步返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksupdatesession9-1)替代。 -**系统能力**:SystemCapability.Security.Huks +**系统能力**: SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ----------------------------------------------- | ---- | ----------------------------------- | -| handle | number | 是 | Finish操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Finish操作的参数集合。 | -| token | Uint8Array | 否 | Finish操作的token。 | -| promise | Promise\<[HuksReturnResult](#huksreturnresult)> | 是 | promise实例,用于获取异步返回结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| token | Uint8Array | 否 | Update操作的token。 | +| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。将Update操作的结果添加到密钥管理系统的回调。 | -## huks.abort(deprecated) +## huks.update(deprecated) -abort(handle: number, options: HuksOptions, callback: AsyncCallback\) : void +update(handle: number, options: HuksOptions, token?: Uint8Array) : Promise\ -abort操作密钥接口,使用Callback回调异步返回结果 。 +update操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -> **说明:** 从API Version 9开始废弃,建议使用[huks.abortSession9+](#huksabortsession9)替代。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksupdatesession9-2)替代。 -**系统能力**:SystemCapability.Security.Huks +**系统能力**: SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------- | ---- | ------------------------------------- | -| handle | number | 是 | Abort操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | -| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ----------------------------------- | ---- | -------------------------------------------- | +| handle | number | 是 | Update操作的handle。 | +| token | Uint8Array | 否 | Update操作的token。 | +| options | [HuksOptions](#huksoptions) | 是 | Update操作的参数集合。 | -**示例:** +**返回值**: -```js -/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update - * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。 - * - * 以下以RSA1024密钥的callback操作使用为例 - */ -var keyalias = "HuksDemoRSA"; -var properties = new Array(); -var options = { - properties: properties, - inData: new Uint8Array(0) -}; -var handle; -var resultMessage = ""; -async function generateKey() { - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_OAEP - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - huks.generateKey(keyalias, options); -} -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} -async function huksInit() { - await huks.init(keyalias, options).then((data) => { - console.log(`test init data: ${JSON.stringify(data)}`); - handle = data.handle; - }).catch((err) => { - console.log("test init err information: " + JSON.stringify(err)) - }) -} -async function huksUpdate() { - options.inData = stringToUint8Array("huksHmacTest"); - await huks.update(handle, options).then((data) => { - if (data.errorCode === 0) { - resultMessage += "update success!"; - } else { - resultMessage += "update fail!"; - } - }); - console.log(resultMessage); -} -function huksFinish() { - options.inData = stringToUint8Array("HuksDemoHMAC"); - huks.finish(handle, options).then((data) => { - if (data.errorCode === 0) { - resultMessage = "finish success!"; - } else { - resultMessage = "finish fail errorCode: " + data.errorCode; - } - }).catch((err) => { - resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err) - }); - console.log(resultMessage); -} -async function huksAbort() { - huks.abort(handle, options).then((data) => { - if (data.errorCode === 0) { - resultMessage = "abort success!"; - } else { - resultMessage = "abort fail errorCode: " + data.errorCode; - } - }).catch((err) => { - resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err) - }); - console.log(resultMessage); -} -``` +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象。将Update操作的结果添加到密钥管理系统的回调。 | -## huks.abort(deprecated) -abort(handle: number, options: HuksOptions) : Promise\; +## huks.finish(deprecated) -abort操作密钥接口,使用Promise方式异步返回结果。 +finish(handle: number, options: HuksOptions, callback: AsyncCallback\) : void -> **说明:** 从API Version 9开始废弃,建议使用[huks.abortSession9+](#huksabortsession9-1)替代。 +finish操作密钥接口,使用Callback回调异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.finishSession9+](#huksfinishsession9)替代。 **系统能力**:SystemCapability.Security.Huks @@ -2433,420 +2585,268 @@ abort操作密钥接口,使用Promise方式异步返回结果。 | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------- | ---- | ------------------------------------- | -| handle | number | 是 | Abort操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | -| promise | Promise\<[HuksResult](#huksresult)> | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 | +| handle | number | 是 | Finish操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Finish的参数集合。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。将Finish操作的结果添加到密钥管理系统的回调。 | -**示例:** -```js -/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update - * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。 - * - * 以下以RSA1024密钥的promise操作使用为例 - */ -var keyalias = "HuksDemoRSA"; -var properties = new Array(); -var options = { - properties: properties, - inData: new Uint8Array(0) -}; -var handle; -var resultMessage = ""; -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} +## huks.finish(deprecated) -async function generateKey() { - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_OAEP - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - huks.generateKey(keyalias, options, function (err, data) { }); -} -async function huksInit() { - return new Promise((resolve, reject) => { - huks.init(keyalias, options, async function (err, data) { - if (data.errorCode === 0) { - resultMessage = "init success!" - handle = data.handle; - } else { - resultMessage = "init fail errorCode: " + data.errorCode - } - }); - }); -} +finish(handle: number, options: HuksOptions) : Promise\ -async function huksUpdate() { - options.inData = stringToUint8Array("huksHmacTest"); - new Promise((resolve, reject) => { - huks.update(handle, options, function (err, data) { - if (data.errorCode === 0) { - resultMessage += "update success!"; - } else { - resultMessage += "update fail!"; - } - }); - }); - console.log(resultMessage); +finish操作密钥接口,使用Promise方式异步返回结果。huks.init, huks.update, huks.finish为三段式接口,需要一起使用。 -} +> **说明:** 从API Version 9开始废弃,建议使用[huks.updateSession9+](#huksfinishsession9-1)替代。 -async function huksFinish() { - options.inData = stringToUint8Array("0"); - new Promise((resolve, reject) => { - huks.finish(handle, options, function (err, data) { - if (data.errorCode === 0) { - resultMessage = "finish success!"; - } else { - resultMessage = "finish fail errorCode: " + data.errorCode; - } - }); - }); -} +**系统能力**:SystemCapability.Security.Huks + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Finish操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Finish操作的参数集合。 | -function huksAbort() { - new Promise((resolve, reject) => { - huks.abort(handle, options, function (err, data) { - console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`); - console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`); - }); - }); -} -``` +**返回值**: -## huks.abortSession9+ +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象,用于获取异步返回结果。 | -abortSession(handle: number, options: HuksOptions, callback: AsyncCallback\) : void -abort操作密钥接口,使用Callback回调异步返回结果 。 +## huks.abort(deprecated) + +abort(handle: number, options: HuksOptions, callback: AsyncCallback\) : void + +abort操作密钥接口,使用Callback回调异步返回结果。 + +> **说明:** 从API Version 9开始废弃,建议使用[huks.abortSession9+](#huksabortsession9)替代。 **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------- | -| handle | number | 是 | Abort操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | -| callback | AsyncCallback\ | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Abort操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | +| callback | AsyncCallback\<[HuksResult](#huksresult)> | 是 | 回调函数。将Abort操作的结果添加到密钥管理系统的回调。 | **示例:** ```js -/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当 - * huks.initSession和huks.updateSession - * 以及huks.finishSession操作中的任一阶段发生错误时, - * 都需要调用huks.abortSession来终止密钥的使用。 +/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update + * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。 * - * 以下以RSA1024密钥的callback功能使用为例 + * 以下以RSA1024密钥的callback操作使用为例 */ -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} - -var keyAlias = "HuksDemoRSA"; -var properties = new Array(); -var options = { - properties: properties, - inData: new Uint8Array(0) +let keyalias = "HuksDemoRSA"; +let properties = new Array(); +let options = { + properties: properties, + inData: new Uint8Array(0) }; -var handle; +let handle; +let resultMessage = ""; async function generateKey() { - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5 - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - properties[5] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB, - } - - try { - await huks.generateKeyItem(keyAlias, options, function (error, data) { - if (error) { - console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: generateKeyItem success`); - } - }); - } catch (error) { - console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_OAEP + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + huks.generateKey(keyalias, options); +} +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; } - async function huksInit() { - console.log('enter huksInit'); - try { - huks.initSession(keyAlias, options, function (error, data) { - if (error) { - console.error(`callback: initSession failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: initSession success, data = ${JSON.stringify(data)}`); - handle = data.handle; - } - }); - } catch (error) { - console.error(`callback: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + await huks.init(keyalias, options).then((data) => { + console.log(`test init data: ${JSON.stringify(data)}`); + handle = data.handle; + }).catch((err) => { + console.log("test init err information: " + JSON.stringify(err)) + }) } - async function huksUpdate() { - console.log('enter huksUpdate'); options.inData = stringToUint8Array("huksHmacTest"); - try { - huks.updateSession(handle, options, function (error, data) { - if (error) { - console.error(`callback: updateSession failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: updateSession success, data = ${JSON.stringify(data)}`); - } - }); - } catch (error) { - console.error(`callback: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + await huks.update(handle, options).then((data) => { + if (data.errorCode === 0) { + resultMessage += "update success!"; + } else { + resultMessage += "update fail!"; + } + }); + console.log(resultMessage); } - -async function huksFinish() { - console.log('enter huksFinish'); - options.inData = new Uint8Array(0); - try { - huks.finishSession(handle, options, function (error, data) { - if (error) { - console.error(`callback: finishSession failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: finishSession success, data = ${JSON.stringify(data)}`); - } - }); - } catch (error) { - console.error(`callback: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`); +function huksFinish() { + options.inData = stringToUint8Array("HuksDemoHMAC"); + huks.finish(handle, options).then((data) => { + if (data.errorCode === 0) { + resultMessage = "finish success!"; + } else { + resultMessage = "finish fail errorCode: " + data.errorCode; } + }).catch((err) => { + resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err) + }); + console.log(resultMessage); } - async function huksAbort() { - console.log('enter huksAbort'); - try { - huks.abortSession(handle, options, function (error, data) { - if (error) { - console.error(`callback: abortSession failed, code: ${error.code}, msg: ${error.message}`); - } else { - console.info(`callback: abortSession success`); - } - }); - } catch (error) { - console.error(`callback: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`); + huks.abort(handle, options).then((data) => { + if (data.errorCode === 0) { + resultMessage = "abort success!"; + } else { + resultMessage = "abort fail errorCode: " + data.errorCode; } + }).catch((err) => { + resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err) + }); + console.log(resultMessage); } ``` -## huks.abortSession9+ +## huks.abort(deprecated) -abortSession(handle: number, options: HuksOptions) : Promise\; +abort(handle: number, options: HuksOptions) : Promise\; abort操作密钥接口,使用Promise方式异步返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[huks.abortSession9+](#huksabortsession9-1)替代。 + **系统能力**:SystemCapability.Security.Huks **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | --------------------------- | ---- | ------------------------------------------- | -| handle | number | 是 | Abort操作的handle。 | -| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | -| promise | Promise\ | 是 | 将Abort操作的结果添加到密钥管理系统的回调。 | - -**示例:** +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------------- | +| handle | number | 是 | Abort操作的handle。 | +| options | [HuksOptions](#huksoptions) | 是 | Abort操作的参数集合。 | -```js -/* huks.initSession, huks.updateSession, huks.finishSession为三段式接口,需要一起使用,当 - * huks.initSession和huks.updateSession - * 以及huks.finishSession操作中的任一阶段发生错误时, - * 都需要调用huks.abortSession来终止密钥的使用。 - * - * 以下以RSA1024密钥的callback功能使用为例 - */ -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpUint8Array = new Uint8Array(arr); - return tmpUint8Array; -} +**返回值**: -var keyAlias = "HuksDemoRSA"; -var properties = new Array(); -var options = { - properties: properties, - inData: new Uint8Array(0) -}; -var handle; -async function generateKey() { - properties[0] = { - tag: huks.HuksTag.HUKS_TAG_ALGORITHM, - value: huks.HuksKeyAlg.HUKS_ALG_RSA - }; - properties[1] = { - tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, - value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 - }; - properties[2] = { - tag: huks.HuksTag.HUKS_TAG_PURPOSE, - value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT - }; - properties[3] = { - tag: huks.HuksTag.HUKS_TAG_PADDING, - value: huks.HuksKeyPadding.HUKS_PADDING_PKCS1_V1_5 - }; - properties[4] = { - tag: huks.HuksTag.HUKS_TAG_DIGEST, - value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 - }; - properties[5] = { - tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE, - value: huks.HuksCipherMode.HUKS_MODE_ECB, - } +| 类型 | 说明 | +| ----------------------------------- | -------------------------------------------------- | +| Promise\<[HuksResult](#huksresult)> | Promise对象。将Abort操作的结果添加到密钥管理系统的回调。 | - try { - await huks.generateKeyItem(keyAlias, options) - .then((data) => { - console.info(`promise: generateKeyItem success`); - }) - .catch(error => { - console.error(`promise: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); - } +**示例:** + +```js +/* huks.init, huks.update, huks.finish为三段式接口,需要一起使用,当huks.init和huks.update + * 以及huks.finish操作中的任一阶段发生错误时,都需要调用huks.abort来终止密钥的使用。 + * + * 以下以RSA1024密钥的promise操作使用为例 + */ +let keyalias = "HuksDemoRSA"; +let properties = new Array(); +let options = { + properties: properties, + inData: new Uint8Array(0) +}; +let handle; +let resultMessage = ""; +function stringToUint8Array(str) { + let arr = []; + for (let i = 0, j = str.length; i < j; ++i) { + arr.push(str.charCodeAt(i)); + } + let tmpUint8Array = new Uint8Array(arr); + return tmpUint8Array; } +async function generateKey() { + properties[0] = { + tag: huks.HuksTag.HUKS_TAG_ALGORITHM, + value: huks.HuksKeyAlg.HUKS_ALG_RSA + }; + properties[1] = { + tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, + value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024 + }; + properties[2] = { + tag: huks.HuksTag.HUKS_TAG_PURPOSE, + value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT + }; + properties[3] = { + tag: huks.HuksTag.HUKS_TAG_PADDING, + value: huks.HuksKeyPadding.HUKS_PADDING_OAEP + }; + properties[4] = { + tag: huks.HuksTag.HUKS_TAG_DIGEST, + value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 + }; + huks.generateKey(keyalias, options, function (err, data) { }); +} async function huksInit() { - console.log('enter huksInit'); - try { - await huks.initSession(keyAlias, options) - .then ((data) => { - console.info(`promise: initSession success, data = ${JSON.stringify(data)}`); - handle = data.handle; - }) - .catch(error => { - console.error(`promise: initSession key failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: initSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + return new Promise((resolve, reject) => { + huks.init(keyalias, options, async function (err, data) { + if (data.errorCode === 0) { + resultMessage = "init success!" + handle = data.handle; + } else { + resultMessage = "init fail errorCode: " + data.errorCode + } + }); + }); } async function huksUpdate() { - console.log('enter huksUpdate'); options.inData = stringToUint8Array("huksHmacTest"); - try { - await huks.updateSession(handle, options) - .then ((data) => { - console.info(`promise: updateSession success, data = ${JSON.stringify(data)}`); - }) - .catch(error => { - console.error(`promise: updateSession failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: updateSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + new Promise((resolve, reject) => { + huks.update(handle, options, function (err, data) { + if (data.errorCode === 0) { + resultMessage += "update success!"; + } else { + resultMessage += "update fail!"; + } + }); + }); + console.log(resultMessage); + } async function huksFinish() { - console.log('enter huksFinish'); - options.inData = new Uint8Array(0); - try { - await huks.finishSession(handle, options) - .then ((data) => { - console.info(`promise: finishSession success, data = ${JSON.stringify(data)}`); - }) - .catch(error => { - console.error(`promise: finishSession failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: finishSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } + options.inData = stringToUint8Array("0"); + new Promise((resolve, reject) => { + huks.finish(handle, options, function (err, data) { + if (data.errorCode === 0) { + resultMessage = "finish success!"; + } else { + resultMessage = "finish fail errorCode: " + data.errorCode; + } + }); + }); } -async function huksAbort() { - console.log('enter huksAbort'); - try { - await huks.abortSession(keyAlias, options) - .then ((data) => { - console.info(`promise: abortSession success`); - }) - .catch(error => { - console.error(`promise: abortSession failed, code: ${error.code}, msg: ${error.message}`); - }); - } catch (error) { - console.error(`promise: abortSession input arg invalid, code: ${error.code}, msg: ${error.message}`); - } +function huksAbort() { + new Promise((resolve, reject) => { + huks.abort(handle, options, function (err, data) { + console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`); + console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`); + }); + }); } ``` -## HuksParam - -调用接口使用的options中的properties数组中的param。 - -**系统能力**:SystemCapability.Security.Huks - -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ----------------------------------- | ---- | ------------ | -| tag | [HuksTag](#hukstag) | 是 | 标签。 | -| value | boolean\|number\|bigint\|Uint8Array | 是 | 标签对应值。 | - -## HuksOptions - -调用接口使用的options。 - -**系统能力**:SystemCapability.Security.Huks - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ----------------- | ---- | ------------------------ | -| properties | Array\<[HuksParam](#huksparam)> | 否 | 属性,用于存HuksParam的数组。 | -| inData | Uint8Array | 否 | 输入数据。 | ## HuksHandle(deprecated) @@ -2860,16 +2860,6 @@ huks Handle结构体。 | handle | number | 是 | 表示handle值。 | | token | Uint8Array | 否 | 表示[init](#huksinit)操作之后获取到的challenge信息。 | -## HuksSessionHandle9+ - -huks Handle结构体。 - -**系统能力**:SystemCapability.Security.Huks - -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ---------- | ---- | ---------------------------------------------------- | -| handle | number | 是 | 表示handle值。 | -| challenge | Uint8Array | 否 | 表示[init](#huksinit)操作之后获取到的challenge信息。 | ## HuksResult(deprecated) @@ -2886,16 +2876,86 @@ huks Handle结构体。 | properties | Array\<[HuksParam](#huksparam)> | 否 | 表示属性信息。 | | certChains | Array\ | 否 | 表示证书链数据。 | -## HuksReturnResult9+ - -调用接口返回的result。 -**系统能力**:SystemCapability.Security.Huks +## HuksErrorCode(deprecated) +表示错误码的枚举。 +**系统能力**:SystemCapability.Security.Huks -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------------- | ---- | ---------------- | -| outData | Uint8Array | 否 | 表示输出数据。 | -| properties | Array\<[HuksParam](#huksparam)> | 否 | 表示属性信息。 | -| certChains | Array\ | 否 | 表示证书链数据。 | \ No newline at end of file +| 名称 | 值 | 说明 | +| -------------------------- | ----- | ---- | +| HUKS_SUCCESS | 0 |表示成功。| +| HUKS_FAILURE | -1 |表示失败。| +| HUKS_ERROR_BAD_STATE | -2 |表示错误的状态。| +| HUKS_ERROR_INVALID_ARGUMENT | -3 |表示无效的数据。| +| HUKS_ERROR_NOT_SUPPORTED | -4 |表示不支持。| +| HUKS_ERROR_NO_PERMISSION | -5 |表示没有许可。| +| HUKS_ERROR_INSUFFICIENT_DATA | -6 |表示数据不足。| +| HUKS_ERROR_BUFFER_TOO_SMALL | -7 |表示缓冲区太小。| +| HUKS_ERROR_INSUFFICIENT_MEMORY | -8 |表示内存不足。| +| HUKS_ERROR_COMMUNICATION_FAILURE | -9 |表示通讯失败。| +| HUKS_ERROR_STORAGE_FAILURE | -10 |表示存储故障。| +| HUKS_ERROR_HARDWARE_FAILURE | -11 |表示硬件故障。| +| HUKS_ERROR_ALREADY_EXISTS | -12 |表示已经存在。| +| HUKS_ERROR_NOT_EXIST | -13 |表示不存在。| +| HUKS_ERROR_NULL_POINTER | -14 |表示空指针。| +| HUKS_ERROR_FILE_SIZE_FAIL | -15 |表示文件大小失败。| +| HUKS_ERROR_READ_FILE_FAIL | -16 |表示读取文件失败。| +| HUKS_ERROR_INVALID_PUBLIC_KEY | -17 |表示无效的公钥。| +| HUKS_ERROR_INVALID_PRIVATE_KEY | -18 |表示无效的私钥。| +| HUKS_ERROR_INVALID_KEY_INFO | -19 |表示无效的密钥信息。| +| HUKS_ERROR_HASH_NOT_EQUAL | -20 |表示哈希不相等。| +| HUKS_ERROR_MALLOC_FAIL | -21 |表示MALLOC 失败。| +| HUKS_ERROR_WRITE_FILE_FAIL | -22 |表示写文件失败。| +| HUKS_ERROR_REMOVE_FILE_FAIL | -23 |表示删除文件失败。| +| HUKS_ERROR_OPEN_FILE_FAIL | -24 |表示打开文件失败。| +| HUKS_ERROR_CLOSE_FILE_FAIL | -25 |表示关闭文件失败。| +| HUKS_ERROR_MAKE_DIR_FAIL | -26 |表示创建目录失败。| +| HUKS_ERROR_INVALID_KEY_FILE | -27 |表示无效的密钥文件。| +| HUKS_ERROR_IPC_MSG_FAIL | -28 |表示IPC 信息失败。| +| HUKS_ERROR_REQUEST_OVERFLOWS | -29 |表示请求溢出。| +| HUKS_ERROR_PARAM_NOT_EXIST | -30 |表示参数不存在。| +| HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 |表示CRYPTO ENGINE错误。| +| HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 |表示通讯超时。| +| HUKS_ERROR_IPC_INIT_FAIL | -33 |表示IPC 初始化失败。| +| HUKS_ERROR_IPC_DLOPEN_FAIL | -34 |表示IPC DLOPEN 失败。| +| HUKS_ERROR_EFUSE_READ_FAIL | -35 |表示EFUSE 读取失败。| +| HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 |表示存在新的根密钥材料。| +| HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 |表示更新根密钥材料失败。| +| HUKS_ERROR_VERIFICATION_FAILED | -38 |表示验证证书链失败。| +| HUKS_ERROR_GET_USERIAM_SECINFO_FAILED9+ | -40 |表示获取当前用户安全属性信息失败。| +| HUKS_ERROR_GET_USERIAM_AUTHINFO_FAILED9+ | -41 |表示获取当前用户认证信息失败。| +| HUKS_ERROR_USER_AUTH_TYPE_NOT_SUPPORT9+ | -42 |表示不支持当前用户认证类型的访问控制。| +| HUKS_ERROR_KEY_AUTH_FAILED9+ | -43 |表示安全访问控制认证失败。| +| HUKS_ERROR_DEVICE_NO_CREDENTIAL9+ | -44 |表示设备当前未录入凭据。| +| HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 |表示检查获取 ALG 失败。| +| HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 |表示检查获取密钥大小失败。| +| HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 |表示检查获取填充失败。| +| HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 |表示检查获取目的失败。| +| HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 |表示检查获取摘要失败。| +| HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 |表示检查获取模式失败。| +| HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 |表示检查获取随机数失败。| +| HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 |表示检查获取 AAD 失败。| +| HUKS_ERROR_CHECK_GET_IV_FAIL | -108 |表示检查 GET IV 失败。| +| HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 |表示检查获取 AE 标记失败。| +| HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 |表示检查获取SALT失败。| +| HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 |表示检查获取迭代失败。| +| HUKS_ERROR_INVALID_ALGORITHM | -112 |表示无效的算法。| +| HUKS_ERROR_INVALID_KEY_SIZE | -113 |表示无效的密钥大小。| +| HUKS_ERROR_INVALID_PADDING | -114 |表示无效的填充。| +| HUKS_ERROR_INVALID_PURPOSE | -115 |表示无效的目的。| +| HUKS_ERROR_INVALID_MODE | -116 |表示无效模式。| +| HUKS_ERROR_INVALID_DIGEST | -117 |表示无效的摘要。| +| HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 |表示签名大小无效。| +| HUKS_ERROR_INVALID_IV | -119 |表示无效的 IV。| +| HUKS_ERROR_INVALID_AAD | -120 |表示无效的 AAD。| +| HUKS_ERROR_INVALID_NONCE | -121 |表示无效的随机数。| +| HUKS_ERROR_INVALID_AE_TAG | -122 |表示无效的 AE 标签。| +| HUKS_ERROR_INVALID_SALT | -123 |表示无效SALT。| +| HUKS_ERROR_INVALID_ITERATION | -124 |表示无效的迭代。| +| HUKS_ERROR_INVALID_OPERATION | -125 |表示无效操作。| +| HUKS_ERROR_INVALID_WRAPPED_FORMAT9+ | -126 |表示导入加密密钥时,密钥格式错误。| +| HUKS_ERROR_INVALID_USAGE_OF_KEY9+ | -127 |表示导入加密密钥时,密钥用途错误。| +| HUKS_ERROR_INTERNAL_ERROR | -999 |表示内部错误。| +| HUKS_ERROR_UNKNOWN_ERROR | -1000 |表示未知错误。| \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis/js-apis-osAccount.md b/zh-cn/application-dev/reference/apis/js-apis-osAccount.md index 45c3e9c87a3161561339636e34067a4e8a24745d..b8c557185193c2f1ca58fcd399d54a2a69d5a7b1 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-osAccount.md +++ b/zh-cn/application-dev/reference/apis/js-apis-osAccount.md @@ -1,6 +1,6 @@ # 系统帐号管理 -本模块提供管理系统帐号的一些基础能力,包括系统帐号的添加、删除、查询、设置、订阅、启动等功能,提供系统帐号数据落盘的能力。 +本模块提供管理系统帐号的基础能力,包括系统帐号的添加、删除、查询、设置、订阅、启动等功能。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 @@ -16,15 +16,15 @@ import account_osAccount from '@ohos.account.osAccount'; getAccountManager(): AccountManager -获取系统帐号能力的实例。 +获取系统帐号管理对象。 **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| --------------------------------- | ------------------------ | -| [AccountManager](#accountmanager) | 获取系统帐号能力的实例。 | +| 类型 | 说明 | +| --------------------------------- | ---------------- | +| [AccountManager](#accountmanager) | 系统帐号管理对象。 | **示例:** ```js @@ -33,27 +33,27 @@ getAccountManager(): AccountManager ## OsAccountType -枚举,系统帐号类型。 +表示系统帐号类型的枚举。 -**系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount。 +**系统能力:** SystemCapability.Account.OsAccount。 | 参数 | 默认值 | 说明 | -| ------ | ------ | ------------ | +| ------ | ------ | ----------- | | ADMIN | 0 | 管理员帐号。 | | NORMAL | 1 | 普通帐号。 | | GUEST | 2 | 访客帐号。 | ## AccountManager -管理系统帐号能力的类。 +系统帐号管理类。 ### activateOsAccount activateOsAccount(localId: number, callback: AsyncCallback<void>): void -激活指定系统帐号,使用callback回调异步返回结果。 +激活指定系统帐号。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION @@ -61,10 +61,18 @@ activateOsAccount(localId: number, callback: AsyncCallback<void>): void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------------------- | -| localId | number | 是 | 要激活的系统帐号ID。 | -| callback | AsyncCallback<void> | 是 | 回调结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | -------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<void> | 是 | 回调函数。当帐号激活成功时,err为null,否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | **示例:** 激活ID为100的系统帐号 ```js @@ -72,10 +80,14 @@ activateOsAccount(localId: number, callback: AsyncCallback<void>): void let localId = 100; try { accountManager.activateOsAccount(localId, (err)=>{ - console.log('activateOsAccount err:' + JSON.stringify(err)); + if (err) { + console.log("activateOsAccount failed, error:" + JSON.stringify(err)); + } else { + console.log("activateOsAccount successfully"); + } }); - } catch (e) { - console.log('activateOsAccount exception:' + JSON.stringify(e)); + } catch (err) { + console.log("activateOsAccount exception:" + JSON.stringify(err)); } ``` @@ -83,9 +95,9 @@ activateOsAccount(localId: number, callback: AsyncCallback<void>): void activateOsAccount(localId: number): Promise<void> -激活指定系统帐号,使用Promise方式异步返回结果。 +激活指定系统帐号。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION @@ -95,13 +107,21 @@ activateOsAccount(localId: number): Promise<void> | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | -------------------- | -| localId | number | 是 | 要激活的系统帐号ID。 | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :---------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :------------------ | :----------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | **示例:** 激活ID为100的系统帐号 ```js @@ -109,240 +129,332 @@ activateOsAccount(localId: number): Promise<void> let localId = 100; try { accountManager.activateOsAccount(localId).then(() => { - console.log('activateOsAccount success'); + console.log('activateOsAccount successfully'); }).catch((err) => { - console.log('activateOsAccount err:' + JSON.stringify(err)); + console.log('activateOsAccount failed, err:' + JSON.stringify(err)); }); } catch (e) { console.log('activateOsAccount exception:' + JSON.stringify(e)); } ``` -### isMultiOsAccountEnabled9+ +### checkMultiOsAccountEnabled9+ -isMultiOsAccountEnabled(callback: AsyncCallback<boolean>): void +checkMultiOsAccountEnabled(callback: AsyncCallback<boolean>): void -判断是否支持多系统帐号,使用callback回调异步返回结果。 +判断是否支持多系统帐号。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | --------------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,支持多系统帐号则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------ | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示支持多系统帐号;返回false表示不支持。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.isMultiOsAccountEnabled((err, isEnabled) => { - console.log('isMultiOsAccountEnabled err: ' + JSON.stringify(err)); - console.log('isMultiOsAccountEnabled isEnabled: ' + isEnabled); + accountManager.checkMultiOsAccountEnabled((err, isEnalbed) => { + if (err) { + console.log("checkMultiOsAccountEnabled failed, error: " + JSON.stringify(err)); + } else { + console.log("checkMultiOsAccountEnabled successfully, isEnabled: " + isEnabled); + } }); - } catch (e) { - console.log('isMultiOsAccountEnabled exception: ' + JSON.stringify(e)); + } catch (err) { + console.log("checkMultiOsAccountEnabled exception: " + JSON.stringify(err)); } ``` -### isMultiOsAccountEnabled9+ +### checkMultiOsAccountEnabled9+ -isMultiOsAccountEnabled(): Promise<boolean> +checkMultiOsAccountEnabled(): Promise<boolean> -判断是否支持多系统帐号,使用Promise方式异步返回结果。 +判断是否支持多系统帐号。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,支持多系统帐号则返回true,否则返回false。 | +| 类型 | 说明 | +| :--------------------- | :--------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示支持多系统帐号;返回false表示不支持。 | **示例:** ```js try { let accountManager = account_osAccount.getAccountManager(); - accountManager.isMultiOsAccountEnabled().then((isEnabled) => { - console.log('isMultiOsAccountEnabled, isEnabled: ' + isEnabled); + accountManager.checkMultiOsAccountEnabled().then((isEnabled) => { + console.log('checkMultiOsAccountEnabled successfully, isEnabled: ' + isEnabled); }).catch((err) => { - console.log('isMultiOsAccountEnabled err: ' + JSON.stringify(err)); + console.log('checkMultiOsAccountEnabled failed, error: ' + JSON.stringify(err)); }); - } catch (e) { - console.log('isMultiOsAccountEnabled exception: ' + JSON.stringify(e)); + } catch (err) { + console.log('checkMultiOsAccountEnabled exception: ' + JSON.stringify(err)); } ``` -### isMultiOsAccountEnable(deprecated) +### checkOsAccountActivated9+ -isMultiOsAccountEnable(callback: AsyncCallback<boolean>): void +checkOsAccountActivated(localId: number, callback: AsyncCallback<boolean>): void -判断是否支持多系统帐号,使用callback回调异步返回结果。 +判断指定系统帐号是否处于激活状态。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[isMultiOsAccountEnabled](#ismultiosaccountenabled9) -> -> 从 API version 7开始支持。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | --------------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,支持多系统帐号则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------ | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示帐号已激活;返回false表示帐号未激活。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 判断ID为100的系统帐号是否处于激活状态 ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isMultiOsAccountEnable((err, isEnabled) => { - console.log('isMultiOsAccountEnable err: ' + JSON.stringify(err)); - console.log('isMultiOsAccountEnable isEnabled: ' + isEnabled); - }); + let osLocalId = 100; + try { + accountManager.checkOsAccountActivated(osLocalId, (err, isActivated)=>{ + if (err) { + console.log('checkOsAccountActivated failed, error:' + JSON.stringify(err)); + } else { + console.log('checkOsAccountActivated successfully, isActivated:' + isActivated); + } + }); + } catch (err) { + console.log('checkOsAccountActivated exception:' + JSON.stringify(err)); + } ``` -### isMultiOsAccountEnable(deprecated) +### checkOsAccountActivated9+ -isMultiOsAccountEnable(): Promise<boolean> +checkOsAccountActivated(localId: number): Promise<boolean> -判断是否支持多系统帐号,使用Promise方式异步返回结果。 +判断指定系统帐号是否处于激活状态。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[isMultiOsAccountEnabled](#ismultiosaccountenabled9-1) -> -> 从 API version 7开始支持。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | --------------------------------- | +| localId | number | 是 | 系统帐号ID。 | + **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,支持多系统帐号则返回true,否则返回false。 | +| 类型 | 说明 | +| ---------------------- | ---------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示帐号已激活;返回false表示帐号未激活。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 判断ID为100的系统帐号是否处于激活状态 ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isMultiOsAccountEnable().then((isEnabled) => { - console.log('isMultiOsAccountEnable, isEnabled: ' + isEnabled); - }).catch((err) => { - console.log('isMultiOsAccountEnable err: ' + JSON.stringify(err)); - }); + let localId = 100; + try { + accountManager.checkOsAccountActivated(localId).then((isActivated) => { + console.log('checkOsAccountActivated successfully, isActivated: ' + isActivated); + }).catch((err) => { + console.log('checkOsAccountActivated failed, error: ' + JSON.stringify(err)); + }); + } catch (err) { + console.log('checkOsAccountActivated exception:' + JSON.stringify(err)); + } ``` -### isOsAccountActivated9+ +### checkConstraintEnabled9+ -isOsAccountActivated(localId: number, callback: AsyncCallback<boolean>): void +checkConstraintEnabled(localId: number, constraint: string, callback: AsyncCallback<boolean>): void -判断指定系统帐号是否处于激活状态,使用callback回调异步返回结果。 +判断指定系统帐号是否具有指定约束。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------------- | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,处于激活状态则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------- | ---- | ----------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示已使能指定的约束;返回false表示未使能指定的约束。 | -**示例:** 判断ID为100的系统帐号是否处于激活状态 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); - let osLocalId = 100; + let localId = 100; + let constraint = "constraint.wifi"; try { - accountManager.isOsAccountActivated(osLocalId, (err, isActive)=>{ - console.log('isOsAccountActivated err:' + JSON.stringify(err)); - console.log('isOsAccountActivated isActive:' + isActive); + accountManager.checkConstraintEnabled(localId, constraint, (err, isEnabled)=>{ + if (err) { + console.log("checkConstraintEnabled failed, error: " + JSON.stringify(err)); + } else { + console.log("checkConstraintEnabled successfully, isEnabled: " + isEnabled); + } }); - } catch (e) { - console.log('isOsAccountActivated exception:' + JSON.stringify(e)); + } catch (err) { + console.log("checkConstraintEnabled exception: " + JSON.stringify(err)); } ``` -### isOsAccountActivated9+ +### checkConstraintEnabled9+ -isOsAccountActivated(localId: number): Promise<boolean> +checkConstraintEnabled(localId: number, constraint: string): Promise<boolean> -判断指定系统帐号是否处于激活状态,使用Promise方式异步返回结果。 +判断指定系统帐号是否具有指定约束。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | ---------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,处于激活状态则返回true,否则返回false。 | +| 类型 | 说明 | +| --------------------- | --------------------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示已使能指定的约束;返回false表示未使能指定的约束。 | -**示例:** 判断ID为100的系统帐号是否处于激活状态 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); - let osLocalId = 100; + let localId = 100; + let constraint = "constraint.wifi"; try { - accountManager.isOsAccountActivated(osLocalId).then((isActive) => { - console.log('isOsAccountActivated, isActive: ' + isActive); + accountManager.checkConstraintEnabled(localId, constraint).then((isEnabled) => { + console.log("checkConstraintEnabled successfully, isEnabled: " + isEnabled); }).catch((err) => { - console.log('isOsAccountActivated err: ' + JSON.stringify(err)); + console.log("checkConstraintEnabled failed, error: " + JSON.stringify(err)); }); - } catch (e) { - console.log('isOsAccountActivated exception:' + JSON.stringify(e)); + } catch (err) { + console.log("checkConstraintEnabled exception: " + JSON.stringify(err)); } ``` -### isOsAccountActived(deprecated) - -isOsAccountActived(localId: number, callback: AsyncCallback<boolean>): void - -判断指定系统帐号是否处于激活状态,使用callback回调异步返回结果。 +### checkOsAccountTestable9+ -> **说明:** 从API version 9开始废弃, 建议使用[isOsAccountActivated](#isosaccountactivated9) -> -> 从 API version 7开始支持。 +checkOsAccountTestable(callback: AsyncCallback<boolean>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +检查当前系统帐号是否为测试帐号。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------------- | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,处于激活状态则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | --------------------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前帐号为测试帐号;返回false表示当前帐号非测试帐号。 | -**示例:** 判断ID为100的系统帐号是否处于激活状态 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let osLocalId = 100; - accountManager.isOsAccountActived(osLocalId, (err, isActive)=>{ - console.log('isOsAccountActived err:' + JSON.stringify(err)); - console.log('isOsAccountActived isActive:' + isActive); - }); + try { + accountManager.checkOsAccountTestable((err, isTestable) => { + if (err) { + console.log("checkOsAccountTestable failed, error: " + JSON.stringify(err)); + } else { + console.log("checkOsAccountTestable successfully, isTestable: " + isTestable); + } + }); + } catch (err) { + console.log("checkOsAccountTestable error: " + JSON.stringify(err)); + } ``` -### isOsAccountActived(deprecated) +### checkOsAccountTestable9+ -isOsAccountActived(localId: number): Promise<boolean> +checkOsAccountTestable(): Promise<boolean> -判断指定系统帐号是否处于激活状态,使用Promise方式异步返回结果。 +检查当前系统帐号是否为测试帐号。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃, 建议使用[isOsAccountActivated](#isosaccountactivated9-1) -> -> 从 API version 7开始支持。 +**系统能力:** SystemCapability.Account.OsAccount + +**返回值:** + +| 类型 | 说明 | +| ---------------------- | ------------------------------------------------------------------------ | +| Promise<boolean> | Promise对象。返回true表示当前帐号为测试帐号;返回false表示当前帐号非测试帐号。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** + + ```js + let accountManager = account_osAccount.getAccountManager(); + try { + accountManager.checkOsAccountTestable().then((isTestable) => { + console.log("checkOsAccountTestable successfully, isTestable: " + isTestable); + }).catch((err) => { + console.log("checkOsAccountTestable failed, error: " + JSON.stringify(err)); + }); + } catch (err) { + console.log('checkOsAccountTestable exception: ' + JSON.stringify(err)); + } + ``` + +### checkOsAccountVerified9+ + +checkOsAccountVerified(callback: AsyncCallback<boolean>): void + +检查当前系统帐号是否已验证。使用callback异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS @@ -350,109 +462,128 @@ isOsAccountActived(localId: number): Promise<boolean> **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前帐号已验证;返回false表示当前帐号未验证。 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,处于激活状态则返回true,否则返回false。 | +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | -**示例:** 判断ID为100的系统帐号是否处于激活状态 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let osLocalId = 100; - accountManager.isOsAccountActived(osLocalId).then((isActive) => { - console.log('isOsAccountActived, isActive: ' + isActive); - }).catch((err) => { - console.log('isOsAccountActived err: ' + JSON.stringify(err)); - }); + try { + accountManager.checkOsAccountVerified((err, isVerified) => { + if (err) { + console.log("checkOsAccountVerified failed, error: " + JSON.stringify(err)); + } else { + console.log("checkOsAccountVerified successfully, isVerified: " + isVerified); + } + }); + } catch (err) { + console.log("checkOsAccountVerified exception: " + JSON.stringify(err)); + } ``` -### isConstraintEnabled9+ +### checkOsAccountVerified9+ -isConstraintEnabled(localId: number, constraint: string, callback: AsyncCallback<boolean>): void +checkOsAccountVerified(localId: number, callback: AsyncCallback<boolean>): void -判断指定系统帐号是否具有指定约束,使用callback回调异步返回结果。 +检查指定系统帐号是否已验证。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------- | ---- | ------------------------------------------------- | -| localId | number | 是 | 指定的系统帐号ID。 | -| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,具有指定约束则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------------- | +| localId | number | 否 | 系统帐号ID。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示指定帐号已验证;返回false表示指定帐号未验证。 | -**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; try { - accountManager.isConstraintEnabled(localId, 'constraint.wifi', (err, isEnabled)=>{ - console.log('isConstraintEnabled err:' + JSON.stringify(err)); - console.log('isConstraintEnabled isEnabled:' + isEnabled); + accountManager.checkOsAccountVerified(localId, (err, result) => { + if (err) { + console.log("checkOsAccountVerified failed, error: " + JSON.stringify(err)); + } else { + console.log("checkOsAccountVerified successfully, isVerified: " + isVerified); + } }); - } catch (e) { - console.log('isConstraintEnabled exception:' + JSON.stringify(e)); + } catch (err) { + console.log("checkOsAccountVerified exception: " + err); } ``` -### isConstraintEnabled9+ +### checkOsAccountVerified9+ -isConstraintEnabled(localId: number, constraint: string): Promise<boolean> +checkOsAccountVerified(localId?: number): Promise<boolean> -判断指定系统帐号是否具有指定约束,使用Promise方式异步返回结果。 +检查指定系统帐号是否已验证。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | ------------------------------------- | -| localId | number | 是 | 指定的系统帐号ID。 | -| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | --------------------------------------------------------------- | +| localId | number | 否 | 系统帐号ID。不填则检查当前系统帐号是否已验证。 | **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,具有指定约束则返回true,否则返回false。 | +| 类型 | 说明 | +| ---------------------- | ----------------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示指定帐号已验证;返回false表示指定帐号未验证。 | -**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; try { - accountManager.isConstraintEnabled(localId, 'constraint.wifi').then((isEnabled) => { - console.log('isConstraintEnabled, isEnabled: ' + isEnabled); + accountManager.checkOsAccountVerified(localId).then((isVerified) => { + console.log("checkOsAccountVerified successfully, isVerified: " + isVerified); }).catch((err) => { - console.log('isConstraintEnabled err: ' + JSON.stringify(err)); + console.log("checkOsAccountVerified failed, error: " + JSON.stringify(err)); }); - } catch (e) { - console.log('isConstraintEnabled exception:' + JSON.stringify(e)); + } catch (err) { + console.log('checkOsAccountVerified exception: ' + JSON.stringify(e)); } ``` -### isOsAccountConstraintEnable(deprecated) +### removeOsAccount -isOsAccountConstraintEnable(localId: number, constraint: string, callback: AsyncCallback<boolean>): void +removeOsAccount(localId: number, callback: AsyncCallback<void>): void -判断指定系统帐号是否具有指定约束,使用callback回调异步返回结果。 +删除指定系统帐号。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[isConstraintEnabled](#isconstraintenabled9) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -460,32 +591,46 @@ isOsAccountConstraintEnable(localId: number, constraint: string, callback: Async **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ---------------------------- | ---- | ------------------------------------------------- | -| localId | number | 是 | 指定的系统帐号ID。 | -| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,具有指定约束则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | -------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<void> | 是 | 回调函数。如果删除帐号成功,err为null,否则为错误对象。 | -**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.isOsAccountConstraintEnable(localId, 'constraint.wifi', (err, isConstraintEnabled)=>{ - console.log('isOsAccountConstraintEnable err:' + JSON.stringify(err)); - console.log('isOsAccountConstraintEnable isConstraintEnabled:' + isConstraintEnabled); - }); + let accountName = "testAccountName"; + try { + accountManager.createOsAccount(accountName, account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo) => { + accountManager.removeOsAccount(osAccountInfo.localId, (err)=>{ + if (err) { + console.log("removeOsAccount failed, error: " + JSON.stringify(err)); + } else { + console.log("removeOsAccount successfully"); + } + }); + }); + } catch (err) { + console.log('removeOsAccount exception:' + JSON.stringify(err)); + } ``` -### isOsAccountConstraintEnable(deprecated) +### removeOsAccount -isOsAccountConstraintEnable(localId: number, constraint: string): Promise<boolean> +removeOsAccount(localId: number): Promise<void> -判断指定系统帐号是否具有指定约束,使用Promise方式异步返回结果。 +删除指定系统帐号。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[isConstraintEnabled](#isconstraintenabled9-1) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -493,344 +638,445 @@ isOsAccountConstraintEnable(localId: number, constraint: string): Promise<boo **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------ | ---- | ------------------------------------- | -| localId | number | 是 | 指定的系统帐号ID。 | -| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | --------------------------------- | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,具有指定约束则返回true,否则返回false。 | +| 类型 | 说明 | +| ------------------- | ------------------------------------ | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | -**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.isOsAccountConstraintEnable(localId, 'constraint.wifi').then((isConstraintEnabled) => { - console.log('isOsAccountConstraintEnable, isConstraintEnabled: ' + isConstraintEnabled); - }).catch((err) => { - console.log('isOsAccountConstraintEnable err: ' + JSON.stringify(err)); - }); + let accountName = "testAccountName"; + try { + accountManager.createOsAccount(accountName, account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo)=>{ + accountManager.removeOsAccount(osAccountInfo.localId).then(() => { + console.log("removeOsAccount successfully"); + }).catch((err) => { + console.log("removeOsAccount failed, error: " + JSON.stringify(err)); + }); + }); + } catch (err) { + console.log("removeOsAccount exception: " + JSON.stringify(err)); + } ``` -### isTestable9+ +### setOsAccountConstraints + +setOsAccountConstraints(localId: number, constraints: Array<string>, enable: boolean,callback: AsyncCallback<void>): void + +为指定系统帐号设置/删除约束。使用callback异步回调。 -isTestable(callback: AsyncCallback<boolean>): void +**系统接口:** 此接口为系统接口。 -检查当前系统帐号是否为测试帐号,使用callback回调异步返回结果。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ----------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,是测试帐号则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| ----------- | ------------------------- | ---- | ----------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraints | Array<string> | 是 | 待设置/删除的[约束](#系统帐号约束列表)列表。 | +| enable | boolean | 是 | 设置(true)/删除(false) | +| callback | AsyncCallback<void> | 是 | 回调函数。如果设置成功,err为null,否则为错误对象。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** 给ID为100的系统帐号设置禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; + let constraint = "constraint.wifi"; try { - accountManager.isTestable((err, isTest) => { - console.log('isTestable err: ' + JSON.stringify(err)); - console.log('isTestable isTest: ' + isTest); + accountManager.setOsAccountConstraints(localId, [constraint], true, (err) => { + if (err) { + console.log("setOsAccountConstraints failed, error:" + JSON.stringify(err)); + } else { + console.log("setOsAccountConstraints successfully"); + } }); - } catch (e) { - console.log('isTestable exception: ' + JSON.stringify(e)); + } catch (err) { + console.log("setOsAccountConstraints exception: " + JSON.stringify(err)); } ``` -### isTestable9+ +### setOsAccountConstraints + +setOsAccountConstraints(localId: number, constraints: Array<string>, enable: boolean): Promise<void> + +为指定系统帐号设置/删除约束。使用Promise异步回调。 -isTestable(): Promise<boolean> +**系统接口:** 此接口为系统接口。 -检查当前系统帐号是否为测试帐号,使用Promise方式异步返回结果。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----------- | ------------------- | ---- | -------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraints | Array<string> | 是 | 待设置/删除的[约束](#系统帐号约束列表)列表。 | +| enable | boolean | 是 | 设置(true)/删除(false)。 | + **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,是测试帐号则返回true,否则返回false。 | +| 类型 | 说明 | +| :------------------ | :----------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** 删除ID为100的系统帐号的禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; try { - accountManager.isTestable().then((isTest) => { - console.log('isTestable, isTest: ' + isTest); + accountManager.setOsAccountConstraints(localId, ['constraint.location.set'], false).then(() => { + console.log('setOsAccountConstraints succsuccessfully'); }).catch((err) => { - console.log('isTestable err: ' + JSON.stringify(err)); + console.log('setOsAccountConstraints failed, error: ' + JSON.stringify(err)); }); - } catch (e) { - console.log('isTestable exception: ' + JSON.stringify(e)); + } catch (err) { + console.log('setOsAccountConstraints exception:' + JSON.stringify(err)); } ``` -### isTestOsAccount(deprecated) +### setOsAccountName -isTestOsAccount(callback: AsyncCallback<boolean>): void +setOsAccountName(localId: number, localName: string, callback: AsyncCallback<void>): void -检查当前系统帐号是否为测试帐号,使用callback回调异步返回结果。 +设置指定系统帐号的帐号名。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[isTestable](#istestable9) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ----------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,是测试帐号则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| :-------- | ------------------------- | ---- | ----------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| localName | string | 是 | 帐号名,最大长度为1024。 | +| callback | AsyncCallback<void> | 是 | 回调函数。如果设置成功,err为null,否则为错误对象。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid parameters. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** 将ID为100的系统帐号的帐号名设置成demoName ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isTestOsAccount((err, isTest) => { - console.log('isTestOsAccount err: ' + JSON.stringify(err)); - console.log('isTestOsAccount isTest: ' + isTest); - }); + let localId = 100; + let name = "demoName"; + try { + accountManager.setOsAccountName(localId, name, (err) => { + if (err) { + console.log("setOsAccountName failed, error: " + JSON.stringify(err)); + } else { + console.log("setOsAccountName successfully"); + } + }); + } catch (err) { + console.log('setOsAccountName exception:' + JSON.stringify(err)); + } ``` -### isTestOsAccount(deprecated) +### setOsAccountName -isTestOsAccount(): Promise<boolean> +setOsAccountName(localId: number, localName: string): Promise<void> -检查当前系统帐号是否为测试帐号,使用Promise方式异步返回结果。 +设置指定系统帐号的帐号名。使用Promise异步调用。 -> **说明:** 从API version 9开始废弃,建议使用[isTestable](#istestable9-1) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------ | ---- | --------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| localName | string | 是 | 帐号名,最大长度为1024。 | + **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,是测试帐号则返回true,否则返回false。 | +| 类型 | 说明 | +| :------------------ | :----------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** 将ID为100的系统帐号的帐号名设置成demoName ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isTestOsAccount().then((isTest) => { - console.log('isTestOsAccount, isTest: ' + isTest); - }).catch((err) => { - console.log('isTestOsAccount err: ' + JSON.stringify(err)); - }); + let localId = 100; + let name = 'testName'; + try { + accountManager.setOsAccountName(localId, name).then(() => { + console.log('setOsAccountName successfully'); + }).catch((err) => { + console.log('setOsAccountName failed, error: ' + JSON.stringify(err)); + }); + } catch (err) { + console.log('setOsAccountName exception:' + JSON.stringify(err)); + } ``` -### isVerified9+ +### getOsAccountCount9+ -isVerified(callback: AsyncCallback<boolean>): void +getOsAccountCount(callback: AsyncCallback<number>): void -检查当前系统帐号是否已验证,使用callback回调异步返回结果。 +获取已创建的系统帐号数量。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,已验证则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------------------------------------- | +| callback | AsyncCallback<number> | 是 | 回调函数。当获取成功时,err为null,data为已创建的系统帐号的数量;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.isVerified((err, isVeri) => { - console.log('isVerified err: ' + JSON.stringify(err)); - console.log('isVerified isVeri: ' + isVeri); + accountManager.getOsAccountCount((err, count) => { + if (err) { + console.log("getOsAccountCount failed, error: " + JSON.stringify(err)); + } else { + console.log("getOsAccountCount successfully, count: " + count); + } }); - } catch (e) { - console.log('isVerified exception: ' + JSON.stringify(e)); + } catch (err) { + console.log("getOsAccountCount exception: " + JSON.stringify(err)); } ``` -### isVerified9+ +### getOsAccountCount9+ -isOsAccountVerified(localId: number, callback: AsyncCallback<boolean>): void +getOsAccountCount(): Promise<number> -检查指定系统帐号是否已验证,使用callback回调异步返回结果。 +获取已创建的系统帐号数量。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount -**参数:** +**返回值:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------- | -| localId | number | 否 | 指定的系统帐号ID。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,已验证则返回true,否则返回false。 | +| 类型 | 说明 | +| --------------------- | -------------------------------------- | +| Promise<number> | Promise对象,返回已创建的系统帐号的数量。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.isVerified((err, isVeri) => { - console.log('isVerified err: ' + JSON.stringify(err)); - console.log('isVerified isVeri: ' + isVeri); + accountManager.getOsAccountCount().then((count) => { + console.log("getOsAccountCount successfully, count: " + count); + }).catch((err) => { + console.log("getOsAccountCount failed, error: " + JSON.stringify(err)); }); - } catch (e) { - console.log('isVerified exception: ' + JSON.stringify(e)); + } catch(err) { + console.log('getOsAccountCount exception:' + JSON.stringify(err)); } ``` -### isVerified9+ - -isOsAccountVerified(localId?: number): Promise<boolean> +### queryOsAccountLocalIdFromProcess9+ -检查指定系统帐号是否已验证,使用Promise方式异步返回结果。 +queryOsAccountLocalIdFromProcess(callback: AsyncCallback<number>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +获取当前进程所属的系统帐号ID,使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------------ | -| localId | number | 否 | 指定的系统帐号ID。 | - -**返回值:** - -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,已验证则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ---------------------------------------------------------------------------- | +| callback | AsyncCallback<number> | 是 | 回调函数。当获取成功时,err为null,data为当前进程所属的系统帐号ID;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.isVerified().then((isVeri) => { - console.log('isVerified, isVeri: ' + isVeri); - }).catch((err) => { - console.log('isVerified err: ' + JSON.stringify(err)); + accountManager.queryOsAccountLocalIdFromProcess((err, localId) => { + if (err) { + console.log("queryOsAccountLocalIdFromProcess failed, error: " + JSON.stringify(err)); + } else { + console.log("queryOsAccountLocalIdFromProcess successfully, localId: " + localId); + } }); - } catch (e) { - console.log('isVerified exception: ' + JSON.stringify(e)); + } catch (err) { + console.log("queryOsAccountLocalIdFromProcess exception: " + JSON.stringify(err)); } ``` -### isOsAccountVerified(deprecated) - -isOsAccountVerified(callback: AsyncCallback<boolean>): void +### queryOsAccountLocalIdFromProcess9+ -检查当前系统帐号是否已验证,使用callback回调异步返回结果。 +queryOsAccountLocalIdFromProcess(): Promise<number> -> **说明:** 从API version 9开始废弃,建议使用[isVerified](#isverified9) -> -> 从 API version 7开始支持。 +获取当前进程所属的系统帐号ID,使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount -**参数:** +**返回值:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------- | -| callback | AsyncCallback<boolean> | 是 | 回调结果,已验证则返回true,否则返回false。 | +| 类型 | 说明 | +| :-------------------- | :--------------------------------------- | +| Promise<number> | Promise对象,返回当前进程所属的系统帐号ID。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isOsAccountVerified((err, isVerified) => { - console.log('isOsAccountVerified err: ' + JSON.stringify(err)); - console.log('isOsAccountVerified isVerified: ' + isVerified); - }); + try { + accountManager.queryOsAccountLocalIdFromProcess().then((localId) => { + console.log("queryOsAccountLocalIdFromProcess successfully, localId: " + localId); + }).catch((err) => { + console.log("queryOsAccountLocalIdFromProcess failed, error: " + JSON.stringify(err)); + }); + } catch (err) { + console.log('queryOsAccountLocalIdFromProcess exception: ' + JSON.stringify(err)); + } ``` -### isOsAccountVerified(deprecated) - -isOsAccountVerified(localId: number, callback: AsyncCallback<boolean>): void - -检查指定系统帐号是否已验证,使用callback回调异步返回结果。 +### queryOsAccountLocalIdFromUid9+ -> **说明:** 从API version 9开始废弃,建议使用[isVerified](#isverified9-1) -> -> 从 API version 7开始支持。 +queryOsAccountLocalIdFromUid(uid: number, callback: AsyncCallback<number>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +根据uid查询对应的系统帐号ID,使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------- | -| localId | number | 否 | 指定的系统帐号ID。 | -| callback | AsyncCallback<boolean> | 是 | 回调结果,已验证则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------------------------------- | +| uid | number | 是 | 进程uid。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果查询成功,err为null,data为对应的系统帐号ID;否则为错误对象。 | -**示例:** + +**错误码:** + +| 错误码ID | 错误信息 | +| 12300002 | Invalid uid. | + +**示例:** 查询值为12345678的uid所属的系统帐号的帐号ID ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isOsAccountVerified((err, isVerified) => { - console.log('isOsAccountVerified err: ' + JSON.stringify(err)); - console.log('isOsAccountVerified isVerified: ' + isVerified); - }); + let uid = 12345678; + try { + accountManager.queryOsAccountLocalIdFromUid(uid, (err, localId) => { + if (err) { + console.log("queryOsAccountLocalIdFromUid failed, error: " + JSON.stringify(err)); + } + console.log("queryOsAccountLocalIdFromUid successfully, localId: " + localId); + }); + } catch (err) { + console.log("queryOsAccountLocalIdFromUid exception: " + JSON.stringify(err)); + } ``` -### isOsAccountVerified(deprecated) - -isOsAccountVerified(localId?: number): Promise<boolean> - -检查指定系统帐号是否已验证,使用Promise方式异步返回结果。 +### queryOsAccountLocalIdFromUid9+ -> **说明:** 从API version 9开始废弃,建议使用[isVerified](#isverified9-2) -> -> 从 API version 7开始支持。 +queryOsAccountLocalIdFromUid(uid: number): Promise<number> -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS +根据uid查询对应的系统帐号ID,使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------------ | -| localId | number | 否 | 指定的系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | --------- | +| uid | number | 是 | 进程uid。 | **返回值:** -| 类型 | 说明 | -| :--------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,已验证则返回true,否则返回false。 | +| 类型 | 说明 | +| --------------------- | --------------------------------------- | +| Promise<number> | Promise对象,返回指定uid对应的系统帐号ID。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| 12300002 | Invalid uid. | + +**示例:** 查询值为12345678的uid所属的系统帐号ID ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.isOsAccountVerified().then((isVerified) => { - console.log('isOsAccountVerified, isVerified: ' + isVerified); - }).catch((err) => { - console.log('isOsAccountVerified err: ' + JSON.stringify(err)); - }); + let uid = 12345678; + try { + accountManager.queryOsAccountLocalIdFromUid(uid).then((localId) => { + console.log("queryOsAccountLocalIdFromUid successfully, localId: " + localId); + }).catch((err) => { + console.log("queryOsAccountLocalIdFromUid failed, error: " + JSON.stringify(err)); + }); + } catch (err) { + console.log('queryOsAccountLocalIdFromUid exception: ' + JSON.stringify(err)); + } ``` -### removeOsAccount - -removeOsAccount(localId: number, callback: AsyncCallback<void>): void +### queryOsAccountLocalIdFromDomain9+ -删除指定系统帐号,使用callback回调异步返回结果。 +getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +根据域帐号信息,获取与其关联的系统帐号ID。使用callback异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -838,33 +1084,34 @@ removeOsAccount(localId: number, callback: AsyncCallback<void>): void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------------------- | -| localId | number | 是 | 要删除的系统帐号ID。 | -| callback | AsyncCallback<void> | 是 | 回调结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | --------------------------------------- | ---- | -------------------------------------------------------------------------- | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果查询成功,err为null,data为域帐号关联的系统帐号ID;否则为错误对象。 | **示例:** ```js + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; let accountManager = account_osAccount.getAccountManager(); try { - accountManager.createOsAccount('testAccountName', account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo) => { - accountManager.removeOsAccount(osAccountInfo.localId, (err)=>{ - console.log('removeOsAccount err:' + JSON.stringify(err)); - }); + accountManager.queryOsAccountLocalIdFromDomain(domainInfo, (err, localId) => { + if (err) { + console.log("queryOsAccountLocalIdFromDomain failed, error: " + JSON.stringify(err)); + } else { + console.log("queryOsAccountLocalIdFromDomain successfully, localId: " + localId); + } }); - } catch (e) { - console.log('removeOsAccount exception:' + JSON.stringify(e)); + } catch (err) { + console.log('queryOsAccountLocalIdFromDomain exception: ' + JSON.stringify(err)); } ``` -### removeOsAccount - -removeOsAccount(localId: number): Promise<void> +### queryOsAccountLocalIdFromDomain9+ -删除指定系统帐号,使用Promise方式异步返回结果。 +queryOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo): Promise<number> -此接口为系统接口,三方应用不支持调用。 +根据域帐号信息,获取与其关联的系统帐号的帐号ID。使用Promise异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -872,117 +1119,101 @@ removeOsAccount(localId: number): Promise<void> **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | -------------------- | -| localId | number | 是 | 要删除的系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | --------------------------------------- | ---- | ------------ | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :---------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :------------------------------------- | +| Promise<number> | Promise对象,返回域帐号关联的系统帐号ID。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; try { - accountManager.createOsAccount('testAccountName', account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo)=>{ - accountManager.removeOsAccount(osAccountInfo.localId).then(() => { - console.log('removeOsAccount Success'); - }).catch(() => { - console.log('removeOsAccount err: ' + JSON.stringify(err)); - }); + accountManager.queryOsAccountLocalIdFromDomain(domainInfo).then((localId) => { + console.log("queryOsAccountLocalIdFromDomain successfully, localId: " + localId); + }).catch((err) => { + console.log("queryOsAccountLocalIdFromDomain failed, error: " + JSON.stringify(err)); }); - } catch (e) { - console.log('removeOsAccount exception:' + JSON.stringify(e)); + } catch (err) { + console.log("queryOsAccountLocalIdFromDomain exception: " + JSON.stringify(err)); } ``` -### setOsAccountConstraints - -setOsAccountConstraints(localId: number, constraints: Array<string>, enable: boolean,callback: AsyncCallback<void>): void +### queryMaxOsAccountNumber -为指定系统帐号设置/删除约束,使用callback回调异步返回结果。 +queryMaxOsAccountNumber(callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +查询允许创建的系统帐号的最大数量。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ----------- | ------------------------- | ---- | -------------------------------------------- | -| localId | number | 是 | 系统帐号ID。 | -| constraints | Array<string> | 是 | 待设置/删除的[约束](#系统帐号约束列表)列表。 | -| enable | boolean | 是 | 设置(true)/删除(false) | -| callback | AsyncCallback<void> | 是 | 回调结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------------------------------------------- | +| callback | AsyncCallback<number> | 是 | 回调函数,如果查询成功,err为null,data为允许创建的系统帐号的最大数量;否则为错误对象。 | -**示例:** 给ID为100的系统帐号设置禁止使用Wi-Fi的约束 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; try { - accountManager.setOsAccountConstraints(localId, ['constraint.wifi'], true, (err)=>{ - console.log('setOsAccountConstraints err:' + JSON.stringify(err)); + accountManager.queryMaxOsAccountNumber((err, maxCnt) => { + if (err) { + console.log('queryMaxOsAccountNumber failed, error:' + JSON.stringify(err)); + } else { + console.log('queryMaxOsAccountNumber successfully, maxCnt:' + maxCnt); + } }); - } catch (e) { - console.log('setOsAccountConstraints exception:' + JSON.stringify(e)); + } catch (err) { + console.log('queryMaxOsAccountNumber exception:' + JSON.stringify(err)); } ``` -### setOsAccountConstraints - -setOsAccountConstraints(localId: number, constraints: Array<string>, enable: boolean): Promise<void> +### queryMaxOsAccountNumber -为指定系统帐号设置/删除约束,使用Promise方式异步返回结果。 +queryMaxOsAccountNumber(): Promise<number> -此接口为系统接口,三方应用不支持调用。 +查询允许创建的系统帐号的最大数量。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ----------- | ------------------- | ---- | -------------------------------------------- | -| localId | number | 是 | 系统帐号ID。 | -| constraints | Array<string> | 是 | 待设置/删除的[约束](#系统帐号约束列表)列表。 | -| enable | boolean | 是 | 设置(true)/删除(false)。 | - **返回值:** -| 类型 | 说明 | -| :------------------ | :---------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| --------------------- | ------------------------------------------- | +| Promise<number> | Promise对象,返回允许创建的系统帐号的最大数量。 | -**示例:** 删除ID为100的系统帐号的禁止使用Wi-Fi的约束 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; try { - accountManager.setOsAccountConstraints(localId, ['constraint.location.set'], false).then(() => { - console.log('setOsAccountConstraints Success'); + accountManager.queryMaxOsAccountNumber().then((maxCnt) => { + console.log('queryMaxOsAccountNumber successfully, maxCnt: ' + maxCnt); }).catch((err) => { - console.log('setOsAccountConstraints err: ' + JSON.stringify(err)); + console.log('queryMaxOsAccountNumber failed, error: ' + JSON.stringify(err)); }); - } catch (e) { - console.log('setOsAccountConstraints exception:' + JSON.stringify(e)); + } catch (err) { + console.log('queryMaxOsAccountNumber exception:' + JSON.stringify(err)); } ``` -### setOsAccountName - -setOsAccountName(localId: number, localName: string, callback: AsyncCallback<void>): void +### getOsAccountConstraints9+ -设置指定系统帐号的帐号名,使用callback回调异步返回结果。 +getOsAccountConstraints(localId: number, callback: AsyncCallback<Array<string>>): void -此接口为系统接口,三方应用不支持调用。 +获取指定系统帐号的全部约束。使用callback异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -990,34 +1221,41 @@ setOsAccountName(localId: number, localName: string, callback: AsyncCallback< **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| :-------- | ------------------------- | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | -| localName | string | 是 | 帐号名。 | -| callback | AsyncCallback<void> | 是 | 回调结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | -------------------------------------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<Array<string>> | 是 | 回调函数,如果获取成功,err为null,data为该系统帐号的全部[约束](#系统帐号约束列表);否则为错误对象。 | -**示例:** 将ID为100的系统帐号的帐号名设置成demoName +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号的全部约束 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; - let newName = 'demoName'; try { - accountManager.setOsAccountName(localId, newName, (err)=>{ - console.debug('setOsAccountName err:' + JSON.stringify(err)); + accountManager.getOsAccountConstraints(localId, (err, constraints) => { + if (err) { + console.log("getOsAccountConstraints failed, err: " + JSON.stringify(err)); + } else { + console.log("getOsAccountConstraints successfully, constraints: " + JSON.stringify(constraints)); + } }); - } catch (e) { - console.log('setOsAccountName exception:' + JSON.stringify(e)); + } catch (err) { + console.log('getOsAccountConstraints exception:' + JSON.stringify(err)); } ``` -### setOsAccountName - -setOsAccountName(localId: number, localName: string): Promise<void> +### getOsAccountConstraints9+ -设置指定系统帐号的帐号名,使用Promise方式异步返回结果。 +getOsAccountConstraints(localId: number): Promise<Array<string>> -此接口为系统接口,三方应用不支持调用。 +获取指定系统帐号的全部约束。使用Promise异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -1025,481 +1263,539 @@ setOsAccountName(localId: number, localName: string): Promise<void> **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | -| localName | string | 是 | 帐号名。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------ | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :---------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| ---------------------------------- | ---------------------------------------------------------- | +| Promise<Array<string>> | Promise对象,返回指定系统帐号的全部[约束](#系统帐号约束列表)。 | -**示例:** 将ID为100的系统帐号的帐号名设置成demoName +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号的全部约束 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; - let nameLimit = 'demoName'; try { - accountManager.setOsAccountName(localId, nameLimit).then(() => { - console.log('setOsAccountName Success'); + accountManager.getOsAccountConstraints(localId).then((constraints) => { + console.log('getOsAccountConstraints, constraints: ' + constraints); }).catch((err) => { - console.log('setOsAccountName err: ' + JSON.stringify(err)); + console.log('getOsAccountConstraints err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('setOsAccountName exception:' + JSON.stringify(e)); + console.log('getOsAccountConstraints exception:' + JSON.stringify(e)); } ``` -### getOsAccountCount9+ +### queryAllCreatedOsAccounts -getOsAccountCount(callback: AsyncCallback<number>): void +queryAllCreatedOsAccounts(callback: AsyncCallback<Array<OsAccountInfo>>): void -获取已创建的系统帐号数量,使用callback回调异步返回结果。 +查询已创建的所有系统帐号的信息列表。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS + **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------ | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是已创建的系统帐号的数量。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------- | +| callback | AsyncCallback<Array<[OsAccountInfo](#osaccountinfo)>> | 是 | 回调函数。如果查询成功,err为null,data为已创建的所有系统帐号的信息列表;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.getOsAccountCount((err, accountCnt)=>{ - console.log('obtains the number of all os accounts created err:' + JSON.stringify(err)); - console.log('obtains the number of all os accounts created accountCnt:' + accountCnt); + accountManager.queryAllCreatedOsAccounts((err, accountArr)=>{ + console.log('queryAllCreatedOsAccounts err:' + JSON.stringify(err)); + console.log('queryAllCreatedOsAccounts accountArr:' + JSON.stringify(accountArr)); }); } catch (e) { - console.log('obtains the number of all os accounts created exception:' + JSON.stringify(e)); + console.log('queryAllCreatedOsAccounts exception:' + JSON.stringify(e)); } ``` -### getOsAccountCount9+ +### queryAllCreatedOsAccounts -getOsAccountCount(): Promise<number> +queryAllCreatedOsAccounts(): Promise<Array<OsAccountInfo>> -获取已创建的系统帐号数量,使用Promise方式异步返回结果。 +查询已创建的所有系统帐号的信息列表。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS + **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是已创建的系统帐号的数量。 | +| 类型 | 说明 | +| ----------------------------------------------------------- | --------------------------------------------- | +| Promise<Array<[OsAccountInfo](#osaccountinfo)>> | Promise对象,返回已创建的所有系统帐号的信息列表。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.getOsAccountCount().then((accountCnt) => { - console.log('getOsAccountCount, accountCnt: ' + accountCnt); + accountManager.queryAllCreatedOsAccounts().then((accountArr) => { + console.log('queryAllCreatedOsAccounts, accountArr: ' + JSON.stringify(accountArr)); }).catch((err) => { - console.log('getOsAccountCount err: ' + JSON.stringify(err)); + console.log('queryAllCreatedOsAccounts err: ' + JSON.stringify(err)); }); - } catch(e) { - console.log('getOsAccountCount exception: ' + JSON.stringify(e)); + } catch (e) { + console.log('queryAllCreatedOsAccounts exception:' + JSON.stringify(e)); } ``` -### getCreatedOsAccountsCount(deprecated) - -getCreatedOsAccountsCount(callback: AsyncCallback<number>): void - -获取已创建的系统帐号数量,使用callback回调异步返回结果。 +### getActivatedOsAccountIds9+ -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountCount](#getosaccountcount9) -> -> 从 API version 7开始支持。 +getActivatedOsAccountIds(callback: AsyncCallback<Array<number>>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +查询当前处于激活状态的系统帐号的ID列表。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------ | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是已创建的系统帐号的数量。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------------------------------ | +| callback | AsyncCallback<Array<number>> | 是 | 回调函数。如果查询成功,err为null,data为当前处于激活状态的系统帐号的ID列表;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getCreatedOsAccountsCount((err, accountCnt)=>{ - console.log('obtains the number of all os accounts created err:' + JSON.stringify(err)); - console.log('obtains the number of all os accounts created accountCnt:' + accountCnt); - }); + try { + accountManager.getActivatedOsAccountIds((err, idArray)=>{ + console.log('getActivatedOsAccountIds err:' + JSON.stringify(err)); + console.log('getActivatedOsAccountIds idArray length:' + idArray.length); + for(let i=0;i(deprecated)
- -getCreatedOsAccountsCount(): Promise<number> - -获取已创建的系统帐号数量,使用Promise方式异步返回结果。 +### getActivatedOsAccountIds9+ -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountCount](#getosaccountcount9-1) -> -> 从 API version 7开始支持。 +getActivatedOsAccountIds(): Promise<Array<number>> -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +查询当前处于激活状态的系统帐号的ID列表。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是已创建的系统帐号的数量。 | +| 类型 | 说明 | +| :--------------------------------- | :------------------------------------------------ | +| Promise<Array<number>> | Promise对象,返回当前处于激活状态的系统帐号的ID列表。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getCreatedOsAccountsCount().then((accountCnt) => { - console.log('getCreatedOsAccountsCount, accountCnt: ' + accountCnt); - }).catch((err) => { - console.log('getCreatedOsAccountsCount err: ' + JSON.stringify(err)); - }); + try { + accountManager.getActivatedOsAccountIds().then((idArray) => { + console.log('getActivatedOsAccountIds, idArray: ' + idArray); + }).catch((err) => { + console.log('getActivatedOsAccountIds err: ' + JSON.stringify(err)); + }); + } catch (e) { + console.log('getActivatedOsAccountIds exception:' + JSON.stringify(e)); + } ``` -### queryOsAccountLocalIdFromProcess9+ +### createOsAccount -queryOsAccountLocalIdFromProcess(callback: AsyncCallback<number>): void +createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback<OsAccountInfo>): void -获取当前进程所属的系统帐号的帐号ID,使用callback回调异步返回结果。 +创建一个系统帐号。使用callback异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | -------------------------------------------------- | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是当前进程所属的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| :-------- | ---------------------------------------------------- | ---- | --------------------------------------------------------------------------- | +| localName | string | 是 | 创建的系统帐号的名称。 | +| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | +| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调函数。如果创建成功,err为null,data为新创建的系统帐号的信息;否则为错误对象。 | + +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid localName or type. | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.queryOsAccountLocalIdFromProcess((err, accountID) => { - console.log('queryOsAccountLocalIdFromProcess err: ' + JSON.stringify(err)); - console.log('queryOsAccountLocalIdFromProcess accountID: ' + accountID); + accountManager.createOsAccount('testName', account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo)=>{ + console.log('createOsAccount err:' + JSON.stringify(err)); + console.log('createOsAccount osAccountInfo:' + JSON.stringify(osAccountInfo)); }); } catch (e) { - console.log('queryOsAccountLocalIdFromProcess exception: ' + JSON.stringify(e)); + console.log('createOsAccount exception:' + JSON.stringify(e)); } ``` -### queryOsAccountLocalIdFromProcess9+ +### createOsAccount -queryOsAccountLocalIdFromProcess(): Promise<number> +createOsAccount(localName: string, type: OsAccountType): Promise<OsAccountInfo> -获取当前进程所属的系统帐号的帐号ID,使用Promise方式异步返回结果。 +创建一个系统帐号。使用Promise异步回调。 + +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------------------- | ---- | ---------------------- | +| localName | string | 是 | 创建的系统帐号的名称。 | +| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | + **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号的帐号ID。 | +| 类型 | 说明 | +| ---------------------------------------------- | ------------------------------------- | +| Promise<[OsAccountInfo](#osaccountinfo)> | Promis对象,返回新创建的系统帐号的信息。 | + +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid localName or type. | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.queryOsAccountLocalIdFromProcess().then((accountID) => { - console.log('queryOsAccountLocalIdFromProcess, accountID: ' + accountID); + accountManager.createOsAccount('testAccountName', account_osAccount.OsAccountType.NORMAL).then((accountInfo) => { + console.log('createOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); }).catch((err) => { - console.log('queryOsAccountLocalIdFromProcess err: ' + JSON.stringify(err)); + console.log('createOsAccount err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('queryOsAccountLocalIdFromProcess exception: ' + JSON.stringify(e)); + console.log('createOsAccount exception:' + JSON.stringify(e)); } ``` -### getOsAccountLocalIdFromProcess(deprecated) +### createOsAccountForDomain8+ -getOsAccountLocalIdFromProcess(callback: AsyncCallback<number>): void +createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback<OsAccountInfo>): void -获取当前进程所属的系统帐号的帐号ID,使用callback回调异步返回结果。 +根据域帐号信息,创建一个系统帐号并将其与域帐号关联。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromProcess](#queryosaccountlocalidfromprocess9) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | -------------------------------------------------- | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是当前进程所属的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| :--------- | ---------------------------------------------------- | ---- | -------------------------------------------------------------------------- | +| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | +| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调函数。如果创建成功,err为null,data为新创建的系统帐号的信息;否则为错误对象。 | + +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid type or domainInfo. | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getOsAccountLocalIdFromProcess((err, accountID) => { - console.log('getOsAccountLocalIdFromProcess err: ' + JSON.stringify(err)); - console.log('getOsAccountLocalIdFromProcess accountID: ' + accountID); - }); + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; + try { + accountManager.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo, (err, osAccountInfo)=>{ + console.log('createOsAccountForDomain err:' + JSON.stringify(err)); + console.log('createOsAccountForDomain osAccountInfo:' + JSON.stringify(osAccountInfo)); + }); + } catch (e) { + console.log('createOsAccountForDomain exception:' + JSON.stringify(e)); + } ``` -### getOsAccountLocalIdFromProcess(deprecated) +### createOsAccountForDomain8+ -getOsAccountLocalIdFromProcess(): Promise<number> +createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo): Promise<OsAccountInfo> -获取当前进程所属的系统帐号的帐号ID,使用Promise方式异步返回结果。 +根据传入的域帐号信息,创建与其关联的系统帐号。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromProcess](#queryosaccountlocalidfromprocess9-1) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------------------- | ---- | -------------------- | +| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | + **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号的帐号ID。 | +| 类型 | 说明 | +| ---------------------------------------------- | -------------------------------------- | +| Promise<[OsAccountInfo](#osaccountinfo)> | Promise对象,返回新创建的系统帐号的信息。 | + +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid type or domainInfo. | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getOsAccountLocalIdFromProcess().then((accountID) => { - console.log('getOsAccountLocalIdFromProcess, accountID: ' + accountID); - }).catch((err) => { - console.log('getOsAccountLocalIdFromProcess err: ' + JSON.stringify(err)); - }); + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; + try { + accountManager.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo).then((accountInfo) => { + console.log('createOsAccountForDomain, account info: ' + JSON.stringify(accountInfo)); + }).catch((err) => { + console.log('createOsAccountForDomain err: ' + JSON.stringify(err)); + }); + } catch (e) { + console.log('createOsAccountForDomain exception:' + JSON.stringify(e)); + } ``` -### queryOsAccountLocalIdFromUid9+ +### getCurrentOsAccount9+ -queryOsAccountLocalIdFromUid(uid: number, callback: AsyncCallback<number>): void +getCurrentOsAccount(callback: AsyncCallback<OsAccountInfo>): void -从进程uid中获取该uid所属的系统帐号的帐号ID,使用callback回调异步返回结果。 +查询当前进程所属的系统帐号的信息。使用callback异步回调。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------------- | -| uid | number | 是 | 进程uid。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是uid所属的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | +| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调函数。如果查询成功,err为null,data为当前进程所属的系统帐号信息;否则为错误对象。 | -**示例:** 查询值为12345678的uid所属的系统帐号的帐号ID +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let uid = 12345678; try { - accountManager.queryOsAccountLocalIdFromUid(uid, (err, accountID) => { - console.log('queryOsAccountLocalIdFromUid err: ' + JSON.stringify(err)); - console.log('queryOsAccountLocalIdFromUid: ' + accountID); + accountManager.getCurrentOsAccount((err, curAccountInfo)=>{ + console.log('getCurrentOsAccount err:' + JSON.stringify(err)); + console.log('getCurrentOsAccount curAccountInfo:' + JSON.stringify(curAccountInfo)); }); } catch (e) { - console.log('queryOsAccountLocalIdFromUid exception: ' + JSON.stringify(e)); + console.log('getCurrentOsAccount exception:' + JSON.stringify(e)); } ``` -### queryOsAccountLocalIdFromUid9+ - -queryOsAccountLocalIdFromUid(uid: number): Promise<number> +### getCurrentOsAccount9+ -从进程uid中获取该uid所属的系统帐号的帐号ID,使用Promise方式异步返回结果。 +getCurrentOsAccount(): Promise<OsAccountInfo> -**系统能力:** SystemCapability.Account.OsAccount +查询当前进程所属的系统帐号的信息。使用Promise异步回调。 -**参数:** +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | --------- | -| uid | number | 是 | 进程uid。 | +**系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是uid所属的系统帐号的帐号ID。 | +| 类型 | 说明 | +| ---------------------------------------------- | ----------------------------------------- | +| Promise<[OsAccountInfo](#osaccountinfo)> | Promise对象,返回当前进程所属的系统帐号信息。 | -**示例:** 查询值为12345678的uid所属的系统帐号的帐号ID +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let uid = 12345678; try { - accountManager.queryOsAccountLocalIdFromUid(uid).then((accountID) => { - console.log('queryOsAccountLocalIdFromUid: ' + accountID); + accountManager.getCurrentOsAccount().then((accountInfo) => { + console.log('getCurrentOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); }).catch((err) => { - console.log('queryOsAccountLocalIdFromUid err: ' + JSON.stringify(err)); + console.log('getCurrentOsAccount err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('queryOsAccountLocalIdFromUid exception: ' + JSON.stringify(e)); + console.log('getCurrentOsAccount exception:' + JSON.stringify(e)); } ``` -### getOsAccountLocalIdFromUid(deprecated) +### queryOsAccountById -getOsAccountLocalIdFromUid(uid: number, callback: AsyncCallback<number>): void +queryOsAccountById(localId: number, callback: AsyncCallback<OsAccountInfo>): void -从进程uid中获取该uid所属的系统帐号的帐号ID,使用callback回调异步返回结果。 +查询指定系统帐号的信息。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromUid](#queryosaccountlocalidfromuid9) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | --------------------------------------------- | -| uid | number | 是 | 进程uid。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是uid所属的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ------------------------------------------------------------------------ | +| localId | number | 是 | 要查询的系统帐号的ID。 | +| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调函数。如果查询成功,err为null,data为查到的系统帐号的信息;否则为错误对象。 | -**示例:** 查询值为12345678的uid所属的系统帐号的帐号ID +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 查询ID为100的系统帐号信息 ```js let accountManager = account_osAccount.getAccountManager(); - let uid = 12345678; - accountManager.getOsAccountLocalIdFromUid(uid, (err, accountID) => { - console.log('getOsAccountLocalIdFromUid err: ' + JSON.stringify(err)); - console.log('getOsAccountLocalIdFromUid: ' + accountID); - }); + let localId = 100; + try { + accountManager.queryOsAccountById(localId, (err, accountInfo)=>{ + console.log('queryOsAccountById err:' + JSON.stringify(err)); + console.log('queryOsAccountById accountInfo:' + JSON.stringify(accountInfo)); + }); + } catch (e) { + console.log('queryOsAccountById exception:' + JSON.stringify(e)); + } ``` -### getOsAccountLocalIdFromUid(deprecated) +### queryOsAccountById -getOsAccountLocalIdFromUid(uid: number): Promise<number> +queryOsAccountById(localId: number): Promise<OsAccountInfo> -从进程uid中获取该uid所属的系统帐号的帐号ID,使用Promise方式异步返回结果。 +查询指定系统帐号的信息。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromUid](#queryosaccountlocalidfromuid9-1) -> -> 从 API version 7开始支持。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | --------- | -| uid | number | 是 | 进程uid。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | -------------------- | +| localId | number | 是 | 要查询的系统帐号的ID | **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是uid所属的系统帐号的帐号ID。 | +| 类型 | 说明 | +| ---------------------------------------------- | ------------------------------------ | +| Promise<[OsAccountInfo](#osaccountinfo)> | Promise对象,返回查到的系统帐号的信息。 | -**示例:** 查询值为12345678的uid所属的系统帐号的帐号ID +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 查询ID为100的系统帐号信息 ```js let accountManager = account_osAccount.getAccountManager(); - let uid = 12345678; - accountManager.getOsAccountLocalIdFromUid(uid).then((accountID) => { - console.log('getOsAccountLocalIdFromUid: ' + accountID); - }).catch((err) => { - console.log('getOsAccountLocalIdFromUid err: ' + JSON.stringify(err)); - }); + let localId = 100; + try { + accountManager.queryOsAccountById(localId).then((accountInfo) => { + console.log('queryOsAccountById, accountInfo: ' + JSON.stringify(accountInfo)); + }).catch((err) => { + console.log('queryOsAccountById err: ' + JSON.stringify(err)); + }); + } catch (e) { + console.log('queryOsAccountById exception:' + JSON.stringify(e)); + } ``` -### queryOsAccountLocalIdFromDomain9+ - -getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCallback<number>): void +### getOsAccountType9+ -根据域帐号信息,获取与其关联的系统帐号的帐号ID。 +getOsAccountType(callback: AsyncCallback<OsAccountType>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.MANAGE_LOCAL_ACCOUNTS or ohos.permission.GET_LOCAL_ACCOUNTS +查询当前进程所属的系统帐号的帐号类型。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | --------------------------------------- | ---- | -------------------------------------------- | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是和域帐号关联的系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------------- | +| callback | AsyncCallback<[OsAccountType](#osaccounttype)> | 是 | 回调函数。如果查询成功,err为null,data为当前进程所属的系统帐号的帐号类型;否则为错误对象。 | **示例:** ```js - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; let accountManager = account_osAccount.getAccountManager(); try { - accountManager.queryOsAccountLocalIdFromDomain(domainInfo, (err, accountID) => { - console.log('queryOsAccountLocalIdFromDomain: ' + JSON.stringify(err)); - console.log('queryOsAccountLocalIdFromDomain: ' + accountID); + accountManager.getOsAccountType((err, accountType) => { + console.log('getOsAccountType err: ' + JSON.stringify(err)); + console.log('getOsAccountType accountType: ' + accountType); }); } catch (e) { - console.log('queryOsAccountLocalIdFromDomain: ' + JSON.stringify(e)); + console.log('getOsAccountType exception: ' + JSON.stringify(e)); } ``` -### queryOsAccountLocalIdFromDomain9+ - -queryOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo): Promise<number> +### getOsAccountType9+ -根据域帐号信息,获取与其关联的系统帐号的帐号ID,使用Promise方式异步返回结果。 +getOsAccountType(): Promise<OsAccountType> -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.MANAGE_LOCAL_ACCOUNTS or ohos.permission.GET_LOCAL_ACCOUNTS +查询当前进程所属的系统帐号的帐号类型。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | --------------------------------------- | ---- | ------------ | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | - **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是和域帐号关联的系统帐号ID。 | +| 类型 | 说明 | +| ---------------------------------------------- | ----------------------------------------------- | +| Promise<[OsAccountType](#osaccounttype)> | Promise对象,返回当前进程所属的系统帐号的帐号类型。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; try { - accountManager.queryOsAccountLocalIdFromDomain(domainInfo).then((accountID) => { - console.log('queryOsAccountLocalIdFromDomain: ' + accountID); + accountManager.getOsAccountType().then((accountType) => { + console.log('getOsAccountType, accountType: ' + accountType); }).catch((err) => { - console.log('queryOsAccountLocalIdFromDomain err: ' + JSON.stringify(err)); + console.log('getOsAccountType err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('queryOsAccountLocalIdFromDomain exception: ' + JSON.stringify(e)); + console.log('getOsAccountType exception: ' + JSON.stringify(e)); } ``` -### getOsAccountLocalIdFromDomain(deprecated) - -getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCallback<number>): void +### queryDistributedVirtualDeviceId9+ -根据域帐号信息,获取与其关联的系统帐号的帐号ID。 +queryDistributedVirtualDeviceId(callback: AsyncCallback<string>): void -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromDomain](#queryosaccountlocalidfromdomain9) -> -> 从 API version 8开始支持。 +获取分布式虚拟设备ID。使用callback异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -1507,160 +1803,195 @@ getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCall **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | --------------------------------------- | ---- | -------------------------------------------- | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是和域帐号关联的系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------------------------------- | +| callback | AsyncCallback<string> | 是 | 回调函数。如果获取成功,err为null,data为分布式虚拟设备ID;否则为错误对象。 | **示例:** ```js - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; let accountManager = account_osAccount.getAccountManager(); - accountManager.getOsAccountLocalIdFromDomain(domainInfo, (err, accountID) => { - console.log('getOsAccountLocalIdFromDomain: ' + JSON.stringify(err)); - console.log('getOsAccountLocalIdFromDomain: ' + accountID); - }); + try { + accountManager.queryDistributedVirtualDeviceId((err, virtualID) => { + console.log('queryDistributedVirtualDeviceId err: ' + JSON.stringify(err)); + console.log('queryDistributedVirtualDeviceId virtualID: ' + virtualID); + }); + } catch (e) { + console.log('queryDistributedVirtualDeviceId exception: ' + JSON.stringify(e)); + } ``` -### getOsAccountLocalIdFromDomain(deprecated) - -getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo): Promise<number> +### queryDistributedVirtualDeviceId9+ -根据域帐号信息,获取与其关联的系统帐号的帐号ID,使用Promise方式异步返回结果。 +queryDistributedVirtualDeviceId(): Promise<string> -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromDomain](#queryosaccountlocalidfromdomain9-1) -> -> 从 API version 8开始支持。 +获取分布式虚拟设备ID。使用Promise异步回调。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | --------------------------------------- | ---- | ------------ | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | - **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是和域帐号关联的系统帐号ID。 | +| 类型 | 说明 | +| --------------------- | --------------------------------- | +| Promise<string> | Promise对象,返回分布式虚拟设备ID。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; - accountManager.getOsAccountLocalIdFromDomain(domainInfo).then((accountID) => { - console.log('getOsAccountLocalIdFromDomain: ' + accountID); - }).catch((err) => { - console.log('getOsAccountLocalIdFromDomain err: ' + JSON.stringify(err)); - }); + try { + accountManager.queryDistributedVirtualDeviceId().then((virtualID) => { + console.log('queryDistributedVirtualDeviceId, virtualID: ' + virtualID); + }).catch((err) => { + console.log('queryDistributedVirtualDeviceId err: ' + JSON.stringify(err)); + }); + } catch (e) { + console.log('queryDistributedVirtualDeviceId exception: ' + JSON.stringify(e)); + } ``` -### queryMaxOsAccountNumber +### getOsAccountProfilePhoto -queryMaxOsAccountNumber(callback: AsyncCallback<number>): void +getOsAccountProfilePhoto(localId: number, callback: AsyncCallback<string>): void -查询允许创建的系统帐号的最大数量,使用callback回调异步返回结果。 +获取指定系统帐号的头像信息。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------------ | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是允许创建的系统帐号的最大数量。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<string> | 是 | 回调函数。如果获取成功,err为null,data为指定系统帐号的头像信息;否则为错误对象。 | -**示例:** +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号的头像 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; try { - accountManager.queryMaxOsAccountNumber((err, maxCnt)=>{ - console.log('queryMaxOsAccountNumber err:' + JSON.stringify(err)); - console.log('queryMaxOsAccountNumber maxCnt:' + maxCnt); + accountManager.getOsAccountProfilePhoto(localId, (err, photo)=>{ + console.log('getOsAccountProfilePhoto err:' + JSON.stringify(err)); + console.log('get photo:' + photo + ' by localId: ' + localId); }); } catch (e) { - console.log('queryMaxOsAccountNumber exception:' + JSON.stringify(e)); + console.log('getOsAccountProfilePhoto exception:' + JSON.stringify(e)); } ``` -### queryMaxOsAccountNumber +### getOsAccountProfilePhoto -queryMaxOsAccountNumber(): Promise<number> +getOsAccountProfilePhoto(localId: number): Promise<string> -查询允许创建的系统帐号的最大数量,使用Promise方式异步返回结果。 +获取指定系统帐号的头像信息。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------ | +| localId | number | 是 | 系统帐号ID。 | + **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是允许创建的系统帐号的最大数量。 | +| 类型 | 说明 | +| --------------------- | -------------------------------------- | +| Promise<string> | Promise对象,返回指定系统帐号的头像信息。 | -**示例:** +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号的头像 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; try { - accountManager.queryMaxOsAccountNumber().then((maxCnt) => { - console.log('queryMaxOsAccountNumber, maxCnt: ' + maxCnt); + accountManager.getOsAccountProfilePhoto(localId).then((photo) => { + console.log('getOsAccountProfilePhoto: ' + photo); }).catch((err) => { - console.log('queryMaxOsAccountNumber err: ' + JSON.stringify(err)); + console.log('getOsAccountProfilePhoto err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('queryMaxOsAccountNumber exception:' + JSON.stringify(e)); + console.log('getOsAccountProfilePhoto exception:' + JSON.stringify(e)); } ``` -### getOsAccountConstraints9+ +### setOsAccountProfilePhoto -getOsAccountConstraints(localId: number, callback: AsyncCallback<Array<string>>): void +setOsAccountProfilePhoto(localId: number, photo: string, callback: AsyncCallback<void>): void + +为指定系统帐号设置头像信息。使用callback异步回调。 -获取指定系统帐号的全部约束,使用callback回调异步返回结果。 +**系统接口:** 此接口为系统接口。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<Array<string>> | 是 | 回调结果,返回的是该系统帐号的全部[约束](#系统帐号约束列表)。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------ | +| localId | number | 是 | 系统帐号ID。 | +| photo | string | 是 | 头像信息。 | +| callback | AsyncCallback<void> | 是 | 回调结果。 | + +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | -**示例:** 获取ID为100的系统帐号的全部约束 +**示例:** 给ID为100的系统帐号设置头像 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; + let photo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAARnQU1BAA'+ + 'Cxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVDhPvZLBDYMwDEV/ugsXRjAT0EHCOuFIBwkbdIRewi6unbiAyoGgSn1SFH85+Y'+ + 'q/4ljARW62X+LHS8uIzjm4dXUYF+utzBikB52Jo5e5iEPKqpACk7R9NM2RvWm5tIkD2czLCUFNKLD6IjdMHFHDzws285MgGrT0xCtp3WOKHo'+ + '+7q0mP0DZW9pNmoEFUzrQjp5cCnaen2kSJXLFD8ghbXyZCMQf/8e8Ns1XVAG/XAgqKzVnJFAAAAABJRU5ErkJggg==' try { - accountManager.getOsAccountConstraints(localId, (err, constraints)=>{ - console.log('getOsAccountConstraints err:' + JSON.stringify(err)); - console.log('getOsAccountConstraints:' + JSON.stringify(constraints)); + accountManager.setOsAccountProfilePhoto(localId, photo, (err)=>{ + console.log('setOsAccountProfilePhoto err:' + JSON.stringify(err)); }); } catch (e) { - console.log('getOsAccountConstraints exception:' + JSON.stringify(e)); + console.log('setOsAccountProfilePhoto exception:' + JSON.stringify(e)); } ``` -### getOsAccountConstraints9+ +### setOsAccountProfilePhoto -getOsAccountConstraints(localId: number): Promise<Array<string>> +setOsAccountProfilePhoto(localId: number, photo: string): Promise<void> + +为指定系统帐号设置头像信息。使用Promise异步回调。 -获取指定系统帐号的全部约束,使用Promise方式异步返回结果。 +**系统接口:** 此接口为系统接口。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount @@ -1669,291 +2000,339 @@ getOsAccountConstraints(localId: number): Promise<Array<string>> | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------ | | localId | number | 是 | 系统帐号ID。 | +| photo | string | 是 | 头像信息。 | **返回值:** -| 类型 | 说明 | -| :--------------------------------- | :----------------------------------------------------------- | -| Promise<Array<string>> | Promise实例,用于获取异步返回结果,返回的是该系统帐号的全部[约束](#系统帐号约束列表)。 | +| 类型 | 说明 | +| :------------------ | :----------------------------------- | +| Promise<void> | Promise对象。无返回结果的Promise对象。 | -**示例:** 获取ID为100的系统帐号的全部约束 +**错误码:** +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | +| 12300004 | Restricted Account. | + +**示例:** 给ID为100的系统帐号设置头像 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; + let photo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAARnQU1BAA'+ + 'Cxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVDhPvZLBDYMwDEV/ugsXRjAT0EHCOuFIBwkbdIRewi6unbiAyoGgSn1SFH85+Y'+ + 'q/4ljARW62X+LHS8uIzjm4dXUYF+utzBikB52Jo5e5iEPKqpACk7R9NM2RvWm5tIkD2czLCUFNKLD6IjdMHFHDzws285MgGrT0xCtp3WOKHo'+ + '+7q0mP0DZW9pNmoEFUzrQjp5cCnaen2kSJXLFD8ghbXyZCMQf/8e8Ns1XVAG/XAgqKzVnJFAAAAABJRU5ErkJggg==' try { - accountManager.getOsAccountConstraints(localId).then((constraints) => { - console.log('getOsAccountConstraints, constraints: ' + constraints); + accountManager.setOsAccountProfilePhoto(localId, photo).then(() => { + console.log('setOsAccountProfilePhoto success'); }).catch((err) => { - console.log('getOsAccountConstraints err: ' + JSON.stringify(err)); + console.log('setOsAccountProfilePhoto err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('getOsAccountConstraints exception:' + JSON.stringify(e)); + console.log('setOsAccountProfilePhoto exception:' + JSON.stringify(e)); } ``` -### getOsAccountAllConstraints(deprecated) - -getOsAccountAllConstraints(localId: number, callback: AsyncCallback<Array<string>>): void - -获取指定系统帐号的全部约束,使用callback回调异步返回结果。 +### queryOsAccountLocalIdBySerialNumber9+ -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountConstraints](#getosaccountconstraints9) -> -> 从 API version 7开始支持。 +queryOsAccountLocalIdBySerialNumber(serialNumber: number, callback: AsyncCallback<number>): void -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +通过SN码查询与其关联的系统帐号的帐号ID。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------------------------------------ | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<Array<string>> | 是 | 回调结果,返回的是该系统帐号的全部[约束](#系统帐号约束列表)。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | --------------------------- | ---- | ---------------------------------------------------------------------------- | +| serialNumber | number | 是 | 帐号SN码。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果成功,err为null,data为与SN码关联的系统帐号的帐号ID;否则为错误对象。 | -**示例:** 获取ID为100的系统帐号的全部约束 +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid serialNumber. | + +**示例:** 查询与SN码12345关联的系统帐号的ID ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.getOsAccountAllConstraints(localId, (err, constraints)=>{ - console.log('getOsAccountAllConstraints err:' + JSON.stringify(err)); - console.log('getOsAccountAllConstraints:' + JSON.stringify(constraints)); - }); + let serialNumber = 12345; + try { + accountManager.queryOsAccountLocalIdBySerialNumber(serialNumber, (err, localId)=>{ + console.log('ger localId err:' + JSON.stringify(err)); + console.log('get localId:' + localId + ' by serialNumber: ' + serialNumber); + }); + } catch (e) { + console.log('ger localId exception:' + JSON.stringify(e)); + } ``` -### getOsAccountAllConstraints(deprecated) - -getOsAccountAllConstraints(localId: number): Promise<Array<string>> - -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountConstraints](#getosaccountconstraints9-1) -> -> 从 API version 7开始支持。 +### queryOsAccountLocalIdBySerialNumber9+ -获取指定系统帐号的全部约束,使用Promise方式异步返回结果。 +queryOsAccountLocalIdBySerialNumber(serialNumber: number): Promise<number> -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +通过SN码查询与其关联的系统帐号的帐号ID。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ------ | ---- | ---------- | +| serialNumber | number | 是 | 帐号SN码。 | **返回值:** -| 类型 | 说明 | -| :--------------------------------- | :----------------------------------------------------------- | -| Promise<Array<string>> | Promise实例,用于获取异步返回结果,返回的是该系统帐号的全部[约束](#系统帐号约束列表)。 | +| 类型 | 说明 | +| :-------------------- | :------------------- ----------------------- | +| Promise<number> | Promise对象,返回与SN码关联的系统帐号的帐号ID。 | -**示例:** 获取ID为100的系统帐号的全部约束 +**错误码:** +| 错误码ID | 错误信息 | +| 12300002 | Invalid serialNumber. | + +**示例:** 查询与SN码12345关联的系统帐号的ID ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.getOsAccountAllConstraints(localId).then((constraints) => { - console.log('getOsAccountAllConstraints, constraints: ' + constraints); - }).catch((err) => { - console.log('getOsAccountAllConstraints err: ' + JSON.stringify(err)); - }); + let serialNumber = 12345; + try { + accountManager.queryOsAccountLocalIdBySerialNumber(serialNumber).then((localId) => { + console.log('queryOsAccountLocalIdBySerialNumber localId: ' + localId); + }).catch((err) => { + console.log('queryOsAccountLocalIdBySerialNumber err: ' + JSON.stringify(err)); + }); + } catch (e) { + console.log('queryOsAccountLocalIdBySerialNumber exception: ' + JSON.stringify(e)); + } ``` -### queryAllCreatedOsAccounts - -queryAllCreatedOsAccounts(callback: AsyncCallback<Array<OsAccountInfo>>): void +### querySerialNumberByOsAccountLocalId9+ -查询已创建的所有系统帐号的信息列表,使用callback回调异步返回结果。 +querySerialNumberByOsAccountLocalId(localId: number, callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +通过系统帐号ID获取与该系统帐号关联的SN码。使用callback异步回调。 **系统能力:** SystemCapability.Account.OsAccount -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS - **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------- | -| callback | AsyncCallback<Array<[OsAccountInfo](#osaccountinfo)>> | 是 | 回调结果,返回的是已创建的所有系统帐号的信息列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果获取成功,err为null,data为与该系统帐号关联的SN码;否则为错误对象。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号关联的SN码 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; try { - accountManager.queryAllCreatedOsAccounts((err, accountArr)=>{ - console.log('queryAllCreatedOsAccounts err:' + JSON.stringify(err)); - console.log('queryAllCreatedOsAccounts accountArr:' + JSON.stringify(accountArr)); + accountManager.querySerialNumberByOsAccountLocalId(localId, (err, serialNumber)=>{ + console.log('ger serialNumber err:' + JSON.stringify(err)); + console.log('get serialNumber:' + serialNumber + ' by localId: ' + localId); }); } catch (e) { - console.log('queryAllCreatedOsAccounts exception:' + JSON.stringify(e)); + console.log('ger serialNumber exception:' + JSON.stringify(e)); } ``` -### queryAllCreatedOsAccounts - -queryAllCreatedOsAccounts(): Promise<Array<OsAccountInfo>> +### querySerialNumberByOsAccountLocalId9+ -查询已创建的所有系统帐号的信息列表,使用Promise方式异步返回结果。 +querySerialNumberByOsAccountLocalId(localId: number): Promise<number> -此接口为系统接口,三方应用不支持调用。 +通过系统帐号ID获取与该系统帐号关联的SN码。使用Promise异步回调。 **系统能力:** SystemCapability.Account.OsAccount -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ----------- | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :---------------------------------------------------------- | :----------------------------------------------------------- | -| Promise<Array<[OsAccountInfo](#osaccountinfo)>> | Promise实例,用于获取异步返回结果,返回的是已创建的所有系统帐号的信息列表。 | +| 类型 | 说明 | +| :-------------------- | :------------------------------------- | +| Promise<number> | Promise对象,返回与该系统帐号关联的SN码。 | -**示例:** +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------- | +| 12300002 | Invalid localId. | +| 12300003 | Account not exists. | + +**示例:** 获取ID为100的系统帐号关联的SN码 ```js let accountManager = account_osAccount.getAccountManager(); + let localId = 100; try { - accountManager.queryAllCreatedOsAccounts().then((accountArr) => { - console.log('queryAllCreatedOsAccounts, accountArr: ' + JSON.stringify(accountArr)); + accountManager.querySerialNumberByOsAccountLocalId(localId).then((serialNumber) => { + console.log('querySerialNumberByOsAccountLocalId serialNumber: ' + serialNumber); }).catch((err) => { - console.log('queryAllCreatedOsAccounts err: ' + JSON.stringify(err)); + console.log('querySerialNumberByOsAccountLocalId err: ' + JSON.stringify(err)); }); } catch (e) { - console.log('queryAllCreatedOsAccounts exception:' + JSON.stringify(e)); + console.log('querySerialNumberByOsAccountLocalId exception:' + JSON.stringify(e)); } ``` -### getActivatedOsAccountIds9+ +### on -getActivatedOsAccountIds(callback: AsyncCallback<Array<number>>): void +on(type: 'activate' | 'activating', name: string, callback: Callback<number>): void + +订阅系统帐号的变动信息。使用callback异步回调。 -查询当前处于激活状态的系统帐号的ID列表,使用callback回调异步返回结果。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------------------------------ | -| callback | AsyncCallback<Array<number>> | 是 | 回调结果,返回的是当前处于激活状态的系统帐号的ID列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------- | ---- | ------------------------------------------------------------ | +| type | 'activate' \| 'activating' | 是 | 订阅类型,activate表示订阅的是帐号已激活完成的事件,activating表示订阅的是帐号正在激活的事件。 | +| name | string | 是 | 订阅名称,可自定义,要求非空且长度不超过1024字节。 | +| callback | Callback<number> | 是 | 订阅系统帐号变动信息的回调,表示当前事件对应的系统帐号ID。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); + function onCallback(receiveLocalId){ + console.log('receive localId:' + receiveLocalId); + } try { - accountManager.getActivatedOsAccountIds((err, idArray)=>{ - console.log('getActivatedOsAccountIds err:' + JSON.stringify(err)); - console.log('getActivatedOsAccountIds idArray length:' + idArray.length); - for(let i=0;i9+
+### off -getActivatedOsAccountIds(): Promise<Array<number>> +off(type: 'activate' | 'activating', name: string, callback?: Callback<number>): void + +取消订阅系统帐号的变动信息。使用callback异步回调。 -查询当前处于激活状态的系统帐号的ID列表,使用Promise方式异步返回结果。 +**系统接口:** 此接口为系统接口。 + +**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION **系统能力:** SystemCapability.Account.OsAccount -**返回值:** +**参数:** -| 类型 | 说明 | -| :--------------------------------- | :----------------------------------------------------------- | -| Promise<Array<number>> | Promise实例,用于获取异步返回结果,返回的是当前处于激活状态的系统帐号的ID列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------- | ---- | ------------------------------------------------------------ | +| type | 'activate' \| 'activating' | 是 | 取消订阅类型,activate表示取消订阅帐号已激活完成的事件,activating取消订阅帐号正在激活的事件。 | +| name | string | 是 | 订阅名称,可自定义,,要求非空且长度不超过1024字节,需要与订阅接口传入的值保持一致。 | +| callback | Callback<number> | 否 | 取消订阅系统帐号变化的回调,默认返回0。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); + function offCallback(){ + console.log('off enter') + } try { - accountManager.getActivatedOsAccountIds().then((idArray) => { - console.log('getActivatedOsAccountIds, idArray: ' + idArray); - }).catch((err) => { - console.log('getActivatedOsAccountIds err: ' + JSON.stringify(err)); - }); + accountManager.off('activating', 'osAccountOnOffNameA', offCallback); } catch (e) { - console.log('getActivatedOsAccountIds exception:' + JSON.stringify(e)); + console.log('off exception:' + JSON.stringify(e)); } ``` -### queryActivatedOsAccountIds(deprecated) +### getBundleIdFromUid9+ -queryActivatedOsAccountIds(callback: AsyncCallback<Array<number>>): void +getBundleIdFromUid(uid: number, callback: AsyncCallback<number>): void; -查询当前处于激活状态的系统帐号的ID列表,使用callback回调异步返回结果。 +通过uid查询对应的bundleId,使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[getActivatedOsAccountIds](#getactivatedosaccountids9) -> -> 从 API version 8开始支持。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------- | ---- | ------------------------------------------------------ | -| callback | AsyncCallback<Array<number>> | 是 | 回调结果,返回的是当前处于激活状态的系统帐号的ID列表。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ------------------------------------------------------------------------ | +| uid | number | 是 | 进程uid。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果查询成功,err为null,data为与uid对应的bundleId;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.queryActivatedOsAccountIds((err, idArray)=>{ - console.log('queryActivatedOsAccountIds err:' + JSON.stringify(err)); - console.log('queryActivatedOsAccountIds idArray length:' + idArray.length); - for(let i=0;i { + console.info('getBundleIdFromUid errInfo:' + JSON.stringify(err)); + console.info('getBundleIdFromUid bundleId:' + JSON.stringify(bundleId)); + }); + } catch (e) { + console.info('getBundleIdFromUid exception:' + JSON.stringify(e)); + } ``` +### getBundleIdFromUid9+ -### queryActivatedOsAccountIds(deprecated) - -queryActivatedOsAccountIds(): Promise<Array<number>> +getBundleIdFromUid(uid: number): Promise<number>; -> **说明:** 从API version 9开始废弃,建议使用[getActivatedOsAccountIds](#getactivatedosaccountids9-1) -> -> 从 API version 8开始支持。 +通过uid查询对应的bundleId,使用Promis异步回调。 -查询当前处于激活状态的系统帐号的ID列表,使用Promise方式异步返回结果。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------ | +| uid | number | 是 | 进程uid。 | + **返回值:** -| 类型 | 说明 | -| :--------------------------------- | :----------------------------------------------------------- | -| Promise<Array<number>> | Promise实例,用于获取异步返回结果,返回的是当前处于激活状态的系统帐号的ID列表。 | +| 类型 | 说明 | +| --------------------- | ------------------------------------ | +| Promise<number> | Promise对象,返回与uid对应的bundleId。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.queryActivatedOsAccountIds().then((idArray) => { - console.log('queryActivatedOsAccountIds, idArray: ' + idArray); - }).catch((err) => { - console.log('queryActivatedOsAccountIds err: ' + JSON.stringify(err)); - }); - ``` - -### createOsAccount + let testUid = 1000000; + try { + accountManager.getBundleIdFromUid(testUid).then((result) => { + console.info('getBundleIdFromUid bundleId:' + JSON.stringify(result)); + }).catch((err)=>{ + console.info('getBundleIdFromUid errInfo:' + JSON.stringify(err)); + }); + } catch (e) { + console.info('getBundleIdFromUid exception:' + JSON.stringify(e)); + } + ``` -createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback<OsAccountInfo>): void +### isMainOsAccount9+ + +isMainOsAccount(callback: AsyncCallback<boolean>): void; -创建一个系统帐号,使用callback回调异步返回结果。 +查询当前进程是否处于主用户,使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -1961,73 +2340,62 @@ createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback& **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| :-------- | ---------------------------------------------------- | ---- | ------------------------------------------ | -| localName | string | 是 | 创建的系统帐号的名称。 | -| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | -| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调结果,返回的是新创建的系统帐号的信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ----------------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数,返回true表示当前帐号为主帐号,返回false表示当前帐号非主帐号。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.createOsAccount('testName', account_osAccount.OsAccountType.NORMAL, (err, osAccountInfo)=>{ - console.log('createOsAccount err:' + JSON.stringify(err)); - console.log('createOsAccount osAccountInfo:' + JSON.stringify(osAccountInfo)); + accountManager.isMainOsAccount((err,result)=>{ + console.info('isMainOsAccount errInfo:' + JSON.stringify(err)); + console.info('isMainOsAccount result:' + JSON.stringify(result)); }); } catch (e) { - console.log('createOsAccount exception:' + JSON.stringify(e)); + console.info('isMainOsAccount exception:' + JSON.stringify(e)); } ``` +### isMainOsAccount9+ -### createOsAccount - -createOsAccount(localName: string, type: OsAccountType): Promise<OsAccountInfo> +isMainOsAccount(): Promise<boolean>; -创建一个系统帐号,使用Promise方式异步返回结果。 +查询当前进程是否处于主用户,使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------------------------- | ---- | ---------------------- | -| localName | string | 是 | 创建的系统帐号的名称。 | -| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | - **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountInfo](#osaccountinfo)> | Promise实例,用于获取异步返回结果,返回的是新创建的系统帐号的信息。 | +| 类型 | 说明 | +| ---------------------- | --------------------------------------------------------------------- | +| Promise<boolean> | Promise对象,返回true表示当前帐号为主帐号,返回false表示当前帐号非主帐号。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); try { - accountManager.createOsAccount('testAccountName', account_osAccount.OsAccountType.NORMAL).then((accountInfo) => { - console.log('createOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); - }).catch((err) => { - console.log('createOsAccount err: ' + JSON.stringify(err)); + accountManager.isMainOsAccount().then((result) => { + console.info('isMainOsAccount result:' + JSON.stringify(result)); + }).catch((err)=>{ + console.info('isMainOsAccount errInfo:' + JSON.stringify(err)); }); } catch (e) { - console.log('createOsAccount exception:' + JSON.stringify(e)); + console.info('isMainOsAccount exception:' + JSON.stringify(e)); } ``` +### queryOsAccountConstraintSourceTypes9+ -### createOsAccountForDomain8+ - -createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback<OsAccountInfo>): void +queryOsAccountConstraintSourceTypes(localId: number, constraint: string, callback: AsyncCallback<Array<ConstraintSourceTypeInfo>>): void; -根据域帐号信息,创建一个系统帐号并将其与域帐号关联,使用callback回调异步返回结果。 +查询指定系统帐号的指定约束来源信息,使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -2035,34 +2403,33 @@ createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, cal **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| :--------- | ---------------------------------------------------- | ---- | ------------------------------------------ | -| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | -| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调结果,返回的是新创建的系统帐号的信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------- | ---- | ------------------------------------------------------------ | +| localId | number | 是 | 要查询的系统帐号ID | +| constraint | string | 是 | 要查询的[约束](#系统帐号约束列表)名称 | +| callback | AsyncCallback<Array<[ConstraintSourceTypeInfo](#constraintsourcetypeinfo)>> | 是 | 回调函数。如果成功,err为null,data为指定系统帐号的指定[约束](#系统帐号约束列表)来源信息;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; try { - accountManager.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo, (err, osAccountInfo)=>{ - console.log('createOsAccountForDomain err:' + JSON.stringify(err)); - console.log('createOsAccountForDomain osAccountInfo:' + JSON.stringify(osAccountInfo)); + accountManager.queryOsAccountConstraintSourceTypes(100, 'constraint.wifi',(err,sourceTypeInfos)=>{ + console.info('queryOsAccountConstraintSourceType errInfo:' + JSON.stringify(err)); + console.info('queryOsAccountConstraintSourceType sourceTypeInfos:' + JSON.stringify(sourceTypeInfos)); }); } catch (e) { - console.log('createOsAccountForDomain exception:' + JSON.stringify(e)); + console.info('queryOsAccountConstraintSourceType exception:' + JSON.stringify(e)); } ``` -### createOsAccountForDomain8+ +### queryOsAccountConstraintSourceTypes9+ -createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo): Promise<OsAccountInfo> +queryOsAccountConstraintSourceTypes(localId: number, constraint: string): Promise<Array<ConstraintSourceTypeInfo>>; -根据传入的域帐号信息,创建与其关联的系统帐号,使用Promise方式异步返回结果。 +查询指定系统帐号的指定约束来源信息,使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS @@ -2070,293 +2437,310 @@ createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo): Pr **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | --------------------------------------- | ---- | ---------------------- | -| type | [OsAccountType](#osaccounttype) | 是 | 创建的系统帐号的类型。 | -| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------ | +| localId | number | 是 | 要查询的系统帐号ID | +| constraint | string | 是 | 要查询的[约束](#系统帐号约束列表)名称 | **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountInfo](#osaccountinfo)> | Promise实例,用于获取异步返回结果,返回的是新创建的系统帐号的信息。 | +| 类型 | 说明 | +| :-------------------- | :----------------------------------------------------------- | +| Promise<Array<[ConstraintSourceTypeInfo](#constraintsourcetypeinfo)>> | Promise对象,返回指定系统帐号的指定[约束](#系统帐号约束列表)来源信息。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; try { - accountManager.createOsAccountForDomain(account_osAccount.OsAccountType.NORMAL, domainInfo).then((accountInfo) => { - console.log('createOsAccountForDomain, account info: ' + JSON.stringify(accountInfo)); - }).catch((err) => { - console.log('createOsAccountForDomain err: ' + JSON.stringify(err)); + accountManager.queryOsAccountConstraintSourceTypes(100, 'constraint.wifi').then((result) => { + console.info('queryOsAccountConstraintSourceType sourceTypeInfos:' + JSON.stringify(result)); + }).catch((err)=>{ + console.info('queryOsAccountConstraintSourceType errInfo:' + JSON.stringify(err)); }); } catch (e) { - console.log('createOsAccountForDomain exception:' + JSON.stringify(e)); + console.info('queryOsAccountConstraintSourceType exception:' + JSON.stringify(e)); } ``` -### getCurrentOsAccount9+ +### isMultiOsAccountEnable(deprecated) -getCurrentOsAccount(callback: AsyncCallback<OsAccountInfo>): void +isMultiOsAccountEnable(callback: AsyncCallback<boolean>): void -查询当前进程所属的系统帐号的信息,使用callback回调异步返回结果。 +判断是否支持多系统帐号。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[checkMultiOsAccountEnabled](#checkmultiosaccountenabled9) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | -| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调结果,返回的是当前进程所属的系统帐号信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------ | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示支持多系统帐号;返回false表示不支持。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.getCurrentOsAccount((err, curAccountInfo)=>{ - console.log('getCurrentOsAccount err:' + JSON.stringify(err)); - console.log('getCurrentOsAccount curAccountInfo:' + JSON.stringify(curAccountInfo)); - }); - } catch (e) { - console.log('getCurrentOsAccount exception:' + JSON.stringify(e)); - } + accountManager.isMultiOsAccountEnable((err, isEnalbed) => { + if (err) { + console.log("isMultiOsAccountEnable failed, error: " + JSON.stringify(err)); + } else { + console.log("isMultiOsAccountEnable successfully, isEnabled: " + isEnabled); + } + }); ``` -### getCurrentOsAccount9+ +### isMultiOsAccountEnable(deprecated) -getCurrentOsAccount(): Promise<OsAccountInfo> +isMultiOsAccountEnable(): Promise<boolean> -查询当前进程所属的系统帐号的信息,使用Promise方式异步返回结果。 +判断是否支持多系统帐号。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[checkMultiOsAccountEnabled](#checkmultiosaccountenabled9-1) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountInfo](#osaccountinfo)> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号信息。 | +| 类型 | 说明 | +| :--------------------- | :--------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示支持多系统帐号;返回false表示不支持。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.getCurrentOsAccount().then((accountInfo) => { - console.log('getCurrentOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); - }).catch((err) => { - console.log('getCurrentOsAccount err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('getCurrentOsAccount exception:' + JSON.stringify(e)); - } + accountManager.isMultiOsAccountEnable().then((isEnabled) => { + console.log('isMultiOsAccountEnable successfully, isEnabled: ' + isEnabled); + }).catch((err) => { + console.log('isMultiOsAccountEnable failed, error: ' + JSON.stringify(err)); + }); ``` -### queryCurrentOsAccount(deprecated) -queryCurrentOsAccount(callback: AsyncCallback<OsAccountInfo>): void +### isOsAccountActived(deprecated) -查询当前进程所属的系统帐号的信息,使用callback回调异步返回结果。 +isOsAccountActived(localId: number, callback: AsyncCallback<boolean>): void -> **说明:** 从API version 9开始废弃,建议使用[getCurrentOsAccount](#getcurrentosaccount9) +判断指定系统帐号是否处于激活状态。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃, 建议使用[checkOsAccountActivated](#checkosaccountactivated9) > > 从 API version 7开始支持。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | -| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调结果,返回的是当前进程所属的系统帐号信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------ | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示帐号已激活;返回false表示帐号未激活。 | -**示例:** +**示例:** 判断ID为100的系统帐号是否处于激活状态 ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.queryCurrentOsAccount((err, curAccountInfo)=>{ - console.log('queryCurrentOsAccount err:' + JSON.stringify(err)); - console.log('queryCurrentOsAccount curAccountInfo:' + JSON.stringify(curAccountInfo)); + let localId = 100; + accountManager.isOsAccountActived(localId, (err, isActived) => { + if (err) { + console.log('isOsAccountActived failed, err:' + JSON.stringify(err)); + } else { + console.log('isOsAccountActived successfully, isActived:' + isActived); + } }); ``` -### queryCurrentOsAccount(deprecated) +### isOsAccountActived(deprecated) -queryCurrentOsAccount(): Promise<OsAccountInfo> +isOsAccountActived(localId: number): Promise<boolean> -查询当前进程所属的系统帐号的信息,使用Promise方式异步返回结果。 +判断指定系统帐号是否处于激活状态。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[getCurrentOsAccount](#getcurrentosaccount9-1) +> **说明:** 从API version 9开始废弃, 建议使用[checkOsAccountActivated](#checkosaccountactivated9-1) > > 从 API version 7开始支持。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | --------------------------------- | +| localId | number | 是 | 系统帐号ID。 | + **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountInfo](#osaccountinfo)> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号信息。 | +| 类型 | 说明 | +| --------------------- | ----------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示帐号已激活;返回false表示帐号未激活。 | -**示例:** +**示例:** 判断ID为100的系统帐号是否处于激活状态 ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.queryCurrentOsAccount().then((accountInfo) => { - console.log('queryCurrentOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); + let localId = 100; + accountManager.isOsAccountActived(localId).then((isActived) => { + console.log('isOsAccountActived successfully, isActived: ' + isActived); }).catch((err) => { - console.log('queryCurrentOsAccount err: ' + JSON.stringify(err)); + console.log('isOsAccountActived failed, error: ' + JSON.stringify(err)); }); ``` -### queryOsAccountById +### isOsAccountConstraintEnable(deprecated) -queryOsAccountById(localId: number, callback: AsyncCallback<OsAccountInfo>): void +isOsAccountConstraintEnable(localId: number, constraint: string, callback: AsyncCallback<boolean>): void -查询指定系统帐号的信息,使用callback回调异步返回结果。 +判断指定系统帐号是否具有指定约束。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +> **说明:** 从API version 9开始废弃,建议使用[checkConstraintEnabled](#checkconstraintenabled9) +> +> 从 API version 7开始支持。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ---------------------------------------- | -| localId | number | 是 | 要查询的系统帐号的ID | -| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调结果,返回的是查到的系统帐号的信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------- | ---- | ----------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示已使能指定的约束;返回false表示未使能指定的约束。 | -**示例:** 查询ID为100的系统帐号信息 +**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; - try { - accountManager.queryOsAccountById(localId, (err, accountInfo)=>{ - console.log('queryOsAccountById err:' + JSON.stringify(err)); - console.log('queryOsAccountById accountInfo:' + JSON.stringify(accountInfo)); - }); - } catch (e) { - console.log('queryOsAccountById exception:' + JSON.stringify(e)); - } + let constraint = "constraint.wifi"; + accountManager.isOsAccountConstraintEnable(localId, constraint, (err, isEnabled) => { + if (err) { + console.log("isOsAccountConstraintEnable failed, error:" + JSON.stringify(err)); + } else { + console.log("isOsAccountConstraintEnable successfully, isEnabled:" + isEnabled); + } + }); ``` -### queryOsAccountById +### isOsAccountConstraintEnable(deprecated) -queryOsAccountById(localId: number): Promise<OsAccountInfo> +isOsAccountConstraintEnable(localId: number, constraint: string): Promise<boolean> -查询指定系统帐号的信息,使用Promise方式异步返回结果。 +判断指定系统帐号是否具有指定约束。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +> **说明:** 从API version 9开始废弃,建议使用[checkConstraintEnabled](#checkconstraintenabled9-1) +> +> 从 API version 7开始支持。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | -------------------- | -| localId | number | 是 | 要查询的系统帐号的ID | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------ | ---- | ---------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| constraint | string | 是 | 指定的[约束](#系统帐号约束列表)名称。 | **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountInfo](#osaccountinfo)> | Promise实例,用于获取异步返回结果,返回的是查到的系统帐号的信息。 | +| 类型 | 说明 | +| ---------------------- | --------------------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示已使能指定的约束;返回false表示未使能指定的约束。 | -**示例:** 查询ID为100的系统帐号信息 +**示例:** 判断ID为100的系统帐号是否有禁止使用Wi-Fi的约束 ```js let accountManager = account_osAccount.getAccountManager(); let localId = 100; - try { - accountManager.queryOsAccountById(localId).then((accountInfo) => { - console.log('queryOsAccountById, accountInfo: ' + JSON.stringify(accountInfo)); - }).catch((err) => { - console.log('queryOsAccountById err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('queryOsAccountById exception:' + JSON.stringify(e)); - } + let constraint = "constraint.wifi"; + accountManager.isOsAccountConstraintEnable(localId, constraint).then((isEnabled) => { + console.log("isOsAccountConstraintEnable successfully, isEnabled: " + isEnabled); + }).catch((err) => { + console.log("isOsAccountConstraintEnable err: " + JSON.stringify(err)); + }); ``` -### getOsAccountType9+ +### isTestOsAccount(deprecated) -getOsAccountType(callback: AsyncCallback<OsAccountType>): void +isTestOsAccount(callback: AsyncCallback<boolean>): void -查询当前进程所属的系统帐号的帐号类型,使用callback回调异步返回结果。 +检查当前系统帐号是否为测试帐号。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃,建议使用[checkOsAccountTestable](#checkosaccounttestable9) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------------- | -| callback | AsyncCallback<[OsAccountType](#osaccounttype)> | 是 | 回调结果,返回的是当前进程所属的系统帐号的帐号类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | --------------------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示当前帐号为测试帐号;返回false表示当前帐号非测试帐号。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.getOsAccountType((err, accountType) => { - console.log('getOsAccountType err: ' + JSON.stringify(err)); - console.log('getOsAccountType accountType: ' + accountType); - }); - } catch (e) { - console.log('getOsAccountType exception: ' + JSON.stringify(e)); - } + accountManager.isTestOsAccount((err, isTestable) => { + if (err) { + console.log("isTestOsAccount failed, error: " + JSON.stringify(err)); + } else { + console.log("isTestOsAccount successfully, isTestable: " + isTestable); + } + }); ``` -### getOsAccountType9+ +### isTestOsAccount(deprecated) -getOsAccountType(): Promise<OsAccountType> +isTestOsAccount(): Promise<boolean> + +检查当前系统帐号是否为测试帐号。使用Promise异步回调。 -查询当前进程所属的系统帐号的帐号类型,使用Promise方式异步返回结果。 +> **说明:** 从API version 9开始废弃,建议使用[checkOsAccountTestable](#checkosaccounttestable9-1) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountType](#osaccounttype)> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号的帐号类型。 | +| 类型 | 说明 | +| ---------------------- | ------------------------------------------------------------------------ | +| Promise<boolean> | Promise对象。返回true表示当前帐号为测试帐号;返回false表示当前帐号非测试帐号。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.getOsAccountType().then((accountType) => { - console.log('getOsAccountType, accountType: ' + accountType); - }).catch((err) => { - console.log('getOsAccountType err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('getOsAccountType exception: ' + JSON.stringify(e)); - } + accountManager.isTestOsAccount().then((isTestable) => { + console.log("isTestOsAccount successfully, isTestable: " + isTestable); + }).catch((err) => { + console.log("isTestOsAccount failed, error: " + JSON.stringify(err)); + }); ``` -### getOsAccountTypeFromProcess(deprecated) +### isOsAccountVerified(deprecated) -getOsAccountTypeFromProcess(callback: AsyncCallback<OsAccountType>): void +isOsAccountVerified(callback: AsyncCallback<boolean>): void -查询当前进程所属的系统帐号的帐号类型,使用callback回调异步返回结果。 +检查当前系统帐号是否已验证。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountType](#getosaccounttype9) +> **说明:** 从API version 9开始废弃,建议使用[checkOsAccountVerified](#checkosaccountverified9) > > 从 API version 7开始支持。 @@ -2364,871 +2748,807 @@ getOsAccountTypeFromProcess(callback: AsyncCallback<OsAccountType>): void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------------- | -| callback | AsyncCallback<[OsAccountType](#osaccounttype)> | 是 | 回调结果,返回的是当前进程所属的系统帐号的帐号类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示指定帐号已验证;返回false表示指定帐号未验证。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getOsAccountTypeFromProcess((err, accountType) => { - console.log('getOsAccountTypeFromProcess err: ' + JSON.stringify(err)); - console.log('getOsAccountTypeFromProcess accountType: ' + accountType); + accountManager.isOsAccountVerified((err, isVerified) => { + if (err) { + console.log("isOsAccountVerified failed, error: " + JSON.stringify(err)); + } else { + console.log("isOsAccountVerified successfully, isVerified: " + isVerified); + } }); ``` -### getOsAccountTypeFromProcess(deprecated) +### isOsAccountVerified(deprecated) -getOsAccountTypeFromProcess(): Promise<OsAccountType> +isOsAccountVerified(localId: number, callback: AsyncCallback<boolean>): void -查询当前进程所属的系统帐号的帐号类型,使用Promise方式异步返回结果。 +检查指定系统帐号是否已验证。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[getOsAccountType](#getosaccounttype9-1) +> **说明:** 从API version 9开始废弃,建议使用[checkOsAccountVerified](#checkosaccountverified9-1) > > 从 API version 7开始支持。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS + **系统能力:** SystemCapability.Account.OsAccount -**返回值:** +**参数:** -| 类型 | 说明 | -| :--------------------------------------------- | :----------------------------------------------------------- | -| Promise<[OsAccountType](#osaccounttype)> | Promise实例,用于获取异步返回结果,返回的是当前进程所属的系统帐号的帐号类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------------- | +| localId | number | 否 | 系统帐号ID。 | +| callback | AsyncCallback<boolean> | 是 | 回调函数。返回true表示指定帐号已验证;返回false表示指定帐号未验证。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getOsAccountTypeFromProcess().then((accountType) => { - console.log('getOsAccountTypeFromProcess, accountType: ' + accountType); - }).catch((err) => { - console.log('getOsAccountTypeFromProcess err: ' + JSON.stringify(err)); + let localId = 100; + accountManager.isOsAccountVerified(localId, (err, isVerified) => { + if (err) { + console.log("isOsAccountVerified failed, error: " + JSON.stringify(err)); + } else { + console.log("isOsAccountVerified successfully, isVerified: " + isVerified); + } }); ``` -### queryDistributedVirtualDeviceId9+ +### isOsAccountVerified(deprecated) -queryDistributedVirtualDeviceId(callback: AsyncCallback<string>): void +isOsAccountVerified(localId?: number): Promise<boolean> -获取分布式虚拟设备ID,使用callback回调异步返回结果。 +检查指定系统帐号是否已验证。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS or ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[checkOsAccountVerified](#checkosaccountverified9-2) +> +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------ | -| callback | AsyncCallback<string> | 是 | 回调结果,返回的是分布式虚拟设备ID。 | - -**示例:** - - ```js - let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.queryDistributedVirtualDeviceId((err, virtualID) => { - console.log('queryDistributedVirtualDeviceId err: ' + JSON.stringify(err)); - console.log('queryDistributedVirtualDeviceId virtualID: ' + virtualID); - }); - } catch (e) { - console.log('queryDistributedVirtualDeviceId exception: ' + JSON.stringify(e)); - } - ``` - -### queryDistributedVirtualDeviceId9+ - -queryDistributedVirtualDeviceId(): Promise<string> - -获取分布式虚拟设备ID,使用Promise方式异步返回结果。 - -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS - -**系统能力:** SystemCapability.Account.OsAccount +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ---------------------------------------------------------------- | +| localId | number | 否 | 系统帐号ID。不填则检查当前系统帐号是否已验证。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果,返回的是分布式虚拟设备ID。 | +| 类型 | 说明 | +| ---------------------- | ----------------------------------------------------------------- | +| Promise<boolean> | Promise对象。返回true表示指定帐号已验证;返回false表示指定帐号未验证。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.queryDistributedVirtualDeviceId().then((virtualID) => { - console.log('queryDistributedVirtualDeviceId, virtualID: ' + virtualID); - }).catch((err) => { - console.log('queryDistributedVirtualDeviceId err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('queryDistributedVirtualDeviceId exception: ' + JSON.stringify(e)); - } + accountManager.isOsAccountVerified(localId).then((isVerified) => { + console.log("isOsAccountVerified successfully, isVerified: " + isVerified); + }).catch((err) => { + console.log("isOsAccountVerified failed, error: " + JSON.stringify(err)); + }); ``` -### getDistributedVirtualDeviceId(deprecated) +### getCreatedOsAccountsCount(deprecated) -getDistributedVirtualDeviceId(callback: AsyncCallback<string>): void +getCreatedOsAccountsCount(callback: AsyncCallback<number>): void -获取分布式虚拟设备ID,使用callback回调异步返回结果。 +获取已创建的系统帐号数量。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryDistributedVirtualDeviceId](#querydistributedvirtualdeviceid9) +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountCount](#getosaccountcount9) > > 从 API version 7开始支持。 -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC 或 ohos.permission.MANAGE_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------ | -| callback | AsyncCallback<string> | 是 | 回调结果,返回的是分布式虚拟设备ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | -------------------------------------------------------------------------- | +| callback | AsyncCallback<number> | 是 | 回调函数。当获取成功时,err为null,data为已创建的系统帐号的数量;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getDistributedVirtualDeviceId((err, virtualID) => { - console.log('getDistributedVirtualDeviceId err: ' + JSON.stringify(err)); - console.log('getDistributedVirtualDeviceId virtualID: ' + virtualID); + accountManager.getCreatedOsAccountsCount((err, count)=>{ + if (err) { + console.log("getCreatedOsAccountsCount failed, error: " + JSON.stringify(err)); + } else { + console.log("getCreatedOsAccountsCount successfully, count: " + count); + } }); ``` -### getDistributedVirtualDeviceId(deprecated) +### getCreatedOsAccountsCount(deprecated) -getDistributedVirtualDeviceId(): Promise<string> +getCreatedOsAccountsCount(): Promise<number> -获取分布式虚拟设备ID,使用Promise方式异步返回结果。 +获取已创建的系统帐号数量,使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryDistributedVirtualDeviceId](#querydistributedvirtualdeviceid9-1) +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountCount](#getosaccountcount9-1) > > 从 API version 7开始支持。 -**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC 或 ohos.permission.MANAGE_LOCAL_ACCOUNTS +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果,返回的是分布式虚拟设备ID。 | +| 类型 | 说明 | +| --------------------- | -------------------------------------- | +| Promise<number> | Promise对象,返回已创建的系统帐号的数量。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - accountManager.getDistributedVirtualDeviceId().then((virtualID) => { - console.log('getDistributedVirtualDeviceId, virtualID: ' + virtualID); + accountManager.getCreatedOsAccountsCount().then((count) => { + console.log("getCreatedOsAccountsCount successfully, count: " + count); }).catch((err) => { - console.log('getDistributedVirtualDeviceId err: ' + JSON.stringify(err)); + console.log("getCreatedOsAccountsCount failed, error: " + JSON.stringify(err)); }); ``` -### getOsAccountProfilePhoto - -getOsAccountProfilePhoto(localId: number, callback: AsyncCallback<string>): void +### getOsAccountLocalIdFromProcess(deprecated) -获取指定系统帐号的头像信息,使用callback回调异步返回结果。 +getOsAccountLocalIdFromProcess(callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +获取当前进程所属的系统帐号ID,使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromProcess](#queryosaccountlocalidfromprocess9) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ---------------------------------------- | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<string> | 是 | 回调结果,返回的是该系统帐号的头像信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | ---------------------------------------------------------------------------- | +| callback | AsyncCallback<number> | 是 | 回调函数。当获取成功时,err为null,data为当前进程所属的系统帐号ID;否则为错误对象。 | -**示例:** 获取ID为100的系统帐号的头像 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - try { - accountManager.getOsAccountProfilePhoto(localId, (err, photo)=>{ - console.log('getOsAccountProfilePhoto err:' + JSON.stringify(err)); - console.log('get photo:' + photo + ' by localId: ' + localId); - }); - } catch (e) { - console.log('getOsAccountProfilePhoto exception:' + JSON.stringify(e)); - } + accountManager.getOsAccountLocalIdFromProcess((err, localId) => { + if (err) { + console.log("getOsAccountLocalIdFromProcess failed, error: " + JSON.stringify(err)); + } else { + console.log("getOsAccountLocalIdFromProcess successfully, localId: " + localId); + } + }); ``` -### getOsAccountProfilePhoto - -getOsAccountProfilePhoto(localId: number): Promise<string> +### getOsAccountLocalIdFromProcess(deprecated) -获取指定系统帐号的头像信息,使用Promise方式异步返回结果。 +getOsAccountLocalIdFromProcess(): Promise<number> -此接口为系统接口,三方应用不支持调用。 +获取当前进程所属的系统帐号ID,使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromProcess](#queryosaccountlocalidfromprocess9-1) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | - **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<string> | Promise实例,用于获取异步返回结果,返回的是该系统帐号的头像信息。 | +| 类型 | 说明 | +| :-------------------- | :--------------------------------------- | +| Promise<number> | Promise对象,返回当前进程所属的系统帐号ID。 | -**示例:** 获取ID为100的系统帐号的头像 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - try { - accountManager.getOsAccountProfilePhoto(localId).then((photo) => { - console.log('getOsAccountProfilePhoto: ' + photo); - }).catch((err) => { - console.log('getOsAccountProfilePhoto err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('getOsAccountProfilePhoto exception:' + JSON.stringify(e)); - } + accountManager.getOsAccountLocalIdFromProcess().then((localId) => { + console.log('getOsAccountLocalIdFromProcess successfully, localId: ' + localId); + }).catch((err) => { + console.log('getOsAccountLocalIdFromProcess failed, error: ' + JSON.stringify(err)); + }); ``` -### setOsAccountProfilePhoto - -setOsAccountProfilePhoto(localId: number, photo: string, callback: AsyncCallback<void>): void +### getOsAccountLocalIdFromUid(deprecated) -为指定系统帐号设置头像信息,使用callback回调异步返回结果。 +getOsAccountLocalIdFromUid(uid: number, callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +根据uid查询对应的系统帐号ID。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromUid](#queryosaccountlocalidfromuid9) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | -| photo | string | 是 | 头像信息。 | -| callback | AsyncCallback<void> | 是 | 回调结果。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------------------------------- | +| uid | number | 是 | 进程uid。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果查询成功,err为null,data为对应的系统帐号ID;否则为错误对象。 | -**示例:** 给ID为100的系统帐号设置头像 +**示例:** 查询值为12345678的uid所属的系统帐号ID ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - let photo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAARnQU1BAA'+ - 'Cxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVDhPvZLBDYMwDEV/ugsXRjAT0EHCOuFIBwkbdIRewi6unbiAyoGgSn1SFH85+Y'+ - 'q/4ljARW62X+LHS8uIzjm4dXUYF+utzBikB52Jo5e5iEPKqpACk7R9NM2RvWm5tIkD2czLCUFNKLD6IjdMHFHDzws285MgGrT0xCtp3WOKHo'+ - '+7q0mP0DZW9pNmoEFUzrQjp5cCnaen2kSJXLFD8ghbXyZCMQf/8e8Ns1XVAG/XAgqKzVnJFAAAAABJRU5ErkJggg==' - try { - accountManager.setOsAccountProfilePhoto(localId, photo, (err)=>{ - console.log('setOsAccountProfilePhoto err:' + JSON.stringify(err)); - }); - } catch (e) { - console.log('setOsAccountProfilePhoto exception:' + JSON.stringify(e)); - } + let uid = 12345678; + accountManager.getOsAccountLocalIdFromUid(uid, (err, localId) => { + if (err) { + console.log("getOsAccountLocalIdFromUid failed, error: " + JSON.stringify(err)); + } else { + console.log("getOsAccountLocalIdFromUid successfully, localId: " + localId); + } + }); ``` -### setOsAccountProfilePhoto - -setOsAccountProfilePhoto(localId: number, photo: string): Promise<void> +### getOsAccountLocalIdFromUid(deprecated) -为指定系统帐号设置头像信息,使用Promise方式异步返回结果。 +getOsAccountLocalIdFromUid(uid: number): Promise<number> -此接口为系统接口,三方应用不支持调用。 +根据uid查询对应的系统帐号ID,使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromUid](#queryosaccountlocalidfromuid9-1) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | -| photo | string | 是 | 头像信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | --------- | +| uid | number | 是 | 进程uid。 | **返回值:** -| 类型 | 说明 | -| :------------------ | :---------------------------------- | -| Promise<void> | Promise实例,用于获取异步返回结果。 | +| 类型 | 说明 | +| :-------------------- | :----------------------------------- | +| Promise<number> | Promise对象,返回uid对应的系统帐号ID。 | -**示例:** 给ID为100的系统帐号设置头像 +**示例:** 查询值为12345678的uid所属的系统帐号ID ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - let photo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAPCAYAAAA/I0V3AAAAAXNSR0IArs4c6QAAAARnQU1BAA'+ - 'Cxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACwSURBVDhPvZLBDYMwDEV/ugsXRjAT0EHCOuFIBwkbdIRewi6unbiAyoGgSn1SFH85+Y'+ - 'q/4ljARW62X+LHS8uIzjm4dXUYF+utzBikB52Jo5e5iEPKqpACk7R9NM2RvWm5tIkD2czLCUFNKLD6IjdMHFHDzws285MgGrT0xCtp3WOKHo'+ - '+7q0mP0DZW9pNmoEFUzrQjp5cCnaen2kSJXLFD8ghbXyZCMQf/8e8Ns1XVAG/XAgqKzVnJFAAAAABJRU5ErkJggg==' - try { - accountManager.setOsAccountProfilePhoto(localId, photo).then(() => { - console.log('setOsAccountProfilePhoto success'); - }).catch((err) => { - console.log('setOsAccountProfilePhoto err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('setOsAccountProfilePhoto exception:' + JSON.stringify(e)); - } + let uid = 12345678; + accountManager.getOsAccountLocalIdFromUid(uid).then((localId) => { + console.log("getOsAccountLocalIdFromUid successfully, localId: " + localId); + }).catch((err) => { + console.log("getOsAccountLocalIdFromUid failed, error: " + JSON.stringify(err)); + }); ``` -### queryOsAccountLocalIdBySerialNumber9+ +### getOsAccountLocalIdFromDomain(deprecated) -queryOsAccountLocalIdBySerialNumber(serialNumber: number, callback: AsyncCallback<number>): void +getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo, callback: AsyncCallback<number>): void + +根据域帐号信息,获取与其关联的系统帐号的帐号ID。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromDomain](#queryosaccountlocalidfromdomain9) +> +> 从 API version 8开始支持。 -通过SN码查询与其关联的系统帐号的帐号ID,使用callback回调异步返回结果。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------ | --------------------------- | ---- | ------------------------------------------------ | -| serialNumber | number | 是 | 帐号SN码。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是与SN码关联的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | --------------------------------------- | ---- | --------------------------------------------------------------------------- | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | +| callback | AsyncCallback<number> | 是 | 回调函数,如果获取成功,err为null,data为域帐号关联的系统帐号ID;否则为错误对象。 | -**示例:** 查询与SN码12345关联的系统帐号的ID +**示例:** ```js + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; let accountManager = account_osAccount.getAccountManager(); - let serialNumber = 12345; - try { - accountManager.queryOsAccountLocalIdBySerialNumber(serialNumber, (err, localId)=>{ - console.log('ger localId err:' + JSON.stringify(err)); - console.log('get localId:' + localId + ' by serialNumber: ' + serialNumber); - }); - } catch (e) { - console.log('ger localId exception:' + JSON.stringify(e)); - } + accountManager.getOsAccountLocalIdFromDomain(domainInfo, (err, localId) => { + if (err) { + console.log("getOsAccountLocalIdFromDomain failed, error: " + JSON.stringify(err)); + } else { + console.log("getOsAccountLocalIdFromDomain successfully, localId: " + localId); + } + }); ``` -### queryOsAccountLocalIdBySerialNumber9+ +### getOsAccountLocalIdFromDomain(deprecated) -queryOsAccountLocalIdBySerialNumber(serialNumber: number): Promise<number> +getOsAccountLocalIdFromDomain(domainInfo: DomainAccountInfo): Promise<number> + +根据域帐号信息,获取与其关联的系统帐号的帐号ID。使用Promise异步回调。 + +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdFromDomain](#queryosaccountlocalidfromdomain9-1) +> +> 从 API version 8开始支持。 -通过SN码查询与其关联的系统帐号的帐号ID,使用Promise方式异步返回结果。 +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------ | ------ | ---- | ---------- | -| serialNumber | number | 是 | 帐号SN码。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | --------------------------------------- | ---- | ------------ | +| domainInfo | [DomainAccountInfo](#domainaccountinfo8) | 是 | 域帐号信息。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是与SN码关联的系统帐号的帐号ID。 | +| 类型 | 说明 | +| :-------------------- | :------------------------------------- | +| Promise<number> | Promise对象,返回域帐号关联的系统帐号ID。 | -**示例:** 查询与SN码12345关联的系统帐号的ID +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let serialNumber = 12345; - try { - accountManager.queryOsAccountLocalIdBySerialNumber(serialNumber).then((localId) => { - console.log('queryOsAccountLocalIdBySerialNumber localId: ' + localId); - }).catch((err) => { - console.log('queryOsAccountLocalIdBySerialNumber err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('queryOsAccountLocalIdBySerialNumber exception: ' + JSON.stringify(e)); - } + let domainInfo = {domain: 'testDomain', accountName: 'testAccountName'}; + accountManager.getOsAccountLocalIdFromDomain(domainInfo).then((localId) => { + console.log('getOsAccountLocalIdFromDomain successfully, localId: ' + localId); + }).catch((err) => { + console.log('getOsAccountLocalIdFromDomain failed, error: ' + JSON.stringify(err)); + }); ``` -### getOsAccountLocalIdBySerialNumber(deprecated) +### getOsAccountAllConstraints(deprecated) -getOsAccountLocalIdBySerialNumber(serialNumber: number, callback: AsyncCallback<number>): void +getOsAccountAllConstraints(localId: number, callback: AsyncCallback<Array<string>>): void -通过SN码查询与其关联的系统帐号的帐号ID,使用callback回调异步返回结果。 +获取指定系统帐号的全部约束。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdBySerialNumber](#queryosaccountlocalidbyserialnumber9) +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountConstraints](#getosaccountconstraints9) > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------ | --------------------------- | ---- | ------------------------------------------------ | -| serialNumber | number | 是 | 帐号SN码。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是与SN码关联的系统帐号的帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ---------------------------------------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<Array<string>> | 是 | 回调函数。如果获取成功,err为null,data为指定系统帐号的全部[约束](#系统帐号约束列表);否则为错误对象。 | -**示例:** 查询与SN码12345关联的系统帐号的ID +**示例:** 获取ID为100的系统帐号的全部约束 ```js let accountManager = account_osAccount.getAccountManager(); - let serialNumber = 12345; - accountManager.getOsAccountLocalIdBySerialNumber(serialNumber, (err, localId)=>{ - console.log('ger localId err:' + JSON.stringify(err)); - console.log('get localId:' + localId + ' by serialNumber: ' + serialNumber); + let localId = 100; + accountManager.getOsAccountAllConstraints(localId, (err, constraints)=>{ + console.log('getOsAccountAllConstraints err:' + JSON.stringify(err)); + console.log('getOsAccountAllConstraints:' + JSON.stringify(constraints)); }); ``` -### getOsAccountLocalIdBySerialNumber(deprecated) - -getOsAccountLocalIdBySerialNumber(serialNumber: number): Promise<number> +### getOsAccountAllConstraints(deprecated) -通过SN码查询与其关联的系统帐号的帐号ID,使用Promise方式异步返回结果。 +getOsAccountAllConstraints(localId: number): Promise<Array<string>> -> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdBySerialNumber](#queryosaccountlocalidbyserialnumber9-1) +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountConstraints](#getosaccountconstraints9-1) > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +获取指定系统帐号的全部约束。使用Promise异步回调。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------------ | ------ | ---- | ---------- | -| serialNumber | number | 是 | 帐号SN码。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------ | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是与SN码关联的系统帐号的帐号ID。 | +| 类型 | 说明 | +| :--------------------------------- | :----------------------------------------------------------- | +| Promise<Array<string>> | Promise对象,返回指定系统帐号的全部[约束](#系统帐号约束列表)。 | -**示例:** 查询与SN码12345关联的系统帐号的ID +**示例:** 获取ID为100的系统帐号的全部约束 ```js let accountManager = account_osAccount.getAccountManager(); - let serialNumber = 12345; - accountManager.getOsAccountLocalIdBySerialNumber(serialNumber).then((localId) => { - console.log('getOsAccountLocalIdBySerialNumber localId: ' + localId); + let localId = 100; + accountManager.getOsAccountAllConstraints(localId).then((constraints) => { + console.log('getOsAccountAllConstraints, constraints: ' + constraints); }).catch((err) => { - console.log('getOsAccountLocalIdBySerialNumber err: ' + JSON.stringify(err)); + console.log('getOsAccountAllConstraints err: ' + JSON.stringify(err)); }); ``` -### querySerialNumberByOsAccountLocalId9+ +### queryActivatedOsAccountIds(deprecated) -querySerialNumberByOsAccountLocalId(localId: number, callback: AsyncCallback<number>): void +queryActivatedOsAccountIds(callback: AsyncCallback<Array<number>>): void + +查询当前处于激活状态的系统帐号的ID列表。使用callback异步回调。 -通过系统帐号ID获取与该系统帐号关联的SN码,使用callback回调异步返回结果。 +> **说明:** 从API version 9开始废弃,建议使用[getActivatedOsAccountIds](#getactivatedosaccountids9) +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------ | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是与该系统帐号关联的SN码。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ------------------------------------------------------ | +| callback | AsyncCallback<Array<number>> | 是 | 回调函数。如果查询成功,err为null,data为当前处于激活状态的系统帐号的ID列表;否则为错误对象。 | -**示例:** 获取ID为100的系统帐号关联的SN码 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - try { - accountManager.querySerialNumberByOsAccountLocalId(localId, (err, serialNumber)=>{ - console.log('ger serialNumber err:' + JSON.stringify(err)); - console.log('get serialNumber:' + serialNumber + ' by localId: ' + localId); - }); - } catch (e) { - console.log('ger serialNumber exception:' + JSON.stringify(e)); - } + accountManager.queryActivatedOsAccountIds((err, idArray)=>{ + console.log('queryActivatedOsAccountIds err:' + JSON.stringify(err)); + console.log('queryActivatedOsAccountIds idArray length:' + idArray.length); + for(let i=0;i9+
- -querySerialNumberByOsAccountLocalId(localId: number): Promise<number> +### queryActivatedOsAccountIds(deprecated) -通过系统帐号ID获取与该系统帐号关联的SN码,使用Promise方式异步返回结果。 +queryActivatedOsAccountIds(): Promise<Array<number>> -**系统能力:** SystemCapability.Account.OsAccount +> **说明:** 从API version 9开始废弃,建议使用[getActivatedOsAccountIds](#getactivatedosaccountids9-1) +> +> 从 API version 8开始支持。 -**参数:** +查询当前处于激活状态的系统帐号的ID列表。使用Promise异步回调。 -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | +**系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是与该系统帐号关联的SN码。 | +| 类型 | 说明 | +| ---------------------------------- | ------------------------------------------------- | +| Promise<Array<number>> | Promise对象,返回当前处于激活状态的系统帐号的ID列表。 | -**示例:** 获取ID为100的系统帐号关联的SN码 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - try { - accountManager.querySerialNumberByOsAccountLocalId(localId).then((serialNumber) => { - console.log('querySerialNumberByOsAccountLocalId serialNumber: ' + serialNumber); - }).catch((err) => { - console.log('querySerialNumberByOsAccountLocalId err: ' + JSON.stringify(err)); - }); - } catch (e) { - console.log('querySerialNumberByOsAccountLocalId exception:' + JSON.stringify(e)); - } + accountManager.queryActivatedOsAccountIds().then((idArray) => { + console.log('queryActivatedOsAccountIds, idArray: ' + idArray); + }).catch((err) => { + console.log('queryActivatedOsAccountIds err: ' + JSON.stringify(err)); + }); ``` -### getSerialNumberByOsAccountLocalId(deprecated) +### queryCurrentOsAccount(deprecated) -getSerialNumberByOsAccountLocalId(localId: number, callback: AsyncCallback<number>): void +queryCurrentOsAccount(callback: AsyncCallback<OsAccountInfo>): void -通过系统帐号ID获取与该系统帐号关联的SN码,使用callback回调异步返回结果。 +查询当前进程所属的系统帐号的信息。使用callback异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[querySerialNumberByOsAccountLocalId](#queryserialnumberbyosaccountlocalid9) +> **说明:** 从API version 9开始废弃,建议使用[getCurrentOsAccount](#getcurrentosaccount9) > -> 从 API version 8开始支持。 +> 从 API version 7开始支持。 + +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------- | ---- | ------------------------------------------ | -| localId | number | 是 | 系统帐号ID。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是与该系统帐号关联的SN码。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------- | +| callback | AsyncCallback<[OsAccountInfo](#osaccountinfo)> | 是 | 回调函数。如果查询成功,err为null,data为当前进程所属的系统帐号信息;否则为错误对象。 | -**示例:** 获取ID为100的系统帐号关联的SN码 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.getSerialNumberByOsAccountLocalId(localId, (err, serialNumber)=>{ - console.log('ger serialNumber err:' + JSON.stringify(err)); - console.log('get serialNumber:' + serialNumber + ' by localId: ' + localId); + accountManager.queryCurrentOsAccount((err, curAccountInfo)=>{ + console.log('queryCurrentOsAccount err:' + JSON.stringify(err)); + console.log('queryCurrentOsAccount curAccountInfo:' + JSON.stringify(curAccountInfo)); }); ``` -### getSerialNumberByOsAccountLocalId(deprecated) +### queryCurrentOsAccount(deprecated) -getSerialNumberByOsAccountLocalId(localId: number): Promise<number> +queryCurrentOsAccount(): Promise<OsAccountInfo> -通过系统帐号ID获取与该系统帐号关联的SN码,使用Promise方式异步返回结果。 +查询当前进程所属的系统帐号的信息。使用Promise异步回调。 -> **说明:** 从API version 9开始废弃,建议使用[querySerialNumberByOsAccountLocalId](#queryserialnumberbyosaccountlocalid9-1) +> **说明:** 从API version 9开始废弃,建议使用[getCurrentOsAccount](#getcurrentosaccount9-1) > -> 从 API version 8开始支持。 - -**系统能力:** SystemCapability.Account.OsAccount +> 从 API version 7开始支持。 -**参数:** +**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 系统帐号ID。 | +**系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是与该系统帐号关联的SN码。 | +| 类型 | 说明 | +| ---------------------------------------------- | ------------------------------------------ | +| Promise<[OsAccountInfo](#osaccountinfo)> | Promise对象,返回当前进程所属的系统帐号信息。 | -**示例:** 获取ID为100的系统帐号关联的SN码 +**示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let localId = 100; - accountManager.getSerialNumberByOsAccountLocalId(localId).then((serialNumber) => { - console.log('getSerialNumberByOsAccountLocalId serialNumber: ' + serialNumber); + accountManager.queryCurrentOsAccount().then((accountInfo) => { + console.log('queryCurrentOsAccount, accountInfo: ' + JSON.stringify(accountInfo)); }).catch((err) => { - console.log('getSerialNumberByOsAccountLocalId err: ' + JSON.stringify(err)); + console.log('queryCurrentOsAccount err: ' + JSON.stringify(err)); }); ``` -### on - -on(type: 'activate' | 'activating', name: string, callback: Callback<number>): void +### getOsAccountTypeFromProcess(deprecated) -订阅系统帐号的变动信息,使用callback回调异步返回结果。 +getOsAccountTypeFromProcess(callback: AsyncCallback<OsAccountType>): void -此接口为系统接口,三方应用不支持调用。 +查询当前进程所属的系统帐号的帐号类型。使用callback异步回调。 -**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountType](#getosaccounttype9) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ------------------------------------------------------------ | -| type | 'activate' \| 'activating' | 是 | 订阅类型,activate表示订阅的是帐号已激活完成的事件,activating表示订阅的是帐号正在激活的事件。 | -| name | string | 是 | 订阅名称,可自定义,要求非空且长度不超过1024字节。 | -| callback | Callback<number> | 是 | 订阅系统帐号变动信息的回调,表示当前事件对应的系统帐号ID。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ---------------------------------------------------- | +| callback | AsyncCallback<[OsAccountType](#osaccounttype)> | 是 | 回调函数。如果查询成功,err为null,data为当前进程所属的系统帐号的帐号类型;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - function onCallback(receiveLocalId){ - console.log('receive localId:' + receiveLocalId); - } - try { - accountManager.on('activating', 'osAccountOnOffNameA', onCallback); - } catch (e) { - console.log('receive localId exception:' + JSON.stringify(e)); - } + accountManager.getOsAccountTypeFromProcess((err, accountType) => { + console.log('getOsAccountTypeFromProcess err: ' + JSON.stringify(err)); + console.log('getOsAccountTypeFromProcess accountType: ' + accountType); + }); ``` -### off - -off(type: 'activate' | 'activating', name: string, callback?: Callback<number>): void +### getOsAccountTypeFromProcess(deprecated) -取消订阅系统帐号的变动信息,使用callback回调异步返回结果。 +getOsAccountTypeFromProcess(): Promise<OsAccountType> -此接口为系统接口,三方应用不支持调用。 +查询当前进程所属的系统帐号的帐号类型。使用Promise异步回调。 -**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS_EXTENSION +> **说明:** 从API version 9开始废弃,建议使用[getOsAccountType](#getosaccounttype9-1) +> +> 从 API version 7开始支持。 **系统能力:** SystemCapability.Account.OsAccount -**参数:** +**返回值:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ------------------------------------------------------------ | -| type | 'activate' \| 'activating' | 是 | 取消订阅类型,activate表示取消订阅帐号已激活完成的事件,activating取消订阅帐号正在激活的事件。 | -| name | string | 是 | 订阅名称,可自定义,,要求非空且长度不超过1024字节,需要与订阅接口传入的值保持一致。 | -| callback | Callback<number> | 否 | 取消订阅系统帐号变化的回调,默认返回0。 | +| 类型 | 说明 | +| ---------------------------------------------- | ----------------------------------------------- | +| Promise<[OsAccountType](#osaccounttype)> | Promise对象,返回当前进程所属的系统帐号的帐号类型。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - function offCallback(){ - console.log('off enter') - } - try { - accountManager.off('activating', 'osAccountOnOffNameA', offCallback); - } catch (e) { - console.log('off exception:' + JSON.stringify(e)); - } + accountManager.getOsAccountTypeFromProcess().then((accountType) => { + console.log('getOsAccountTypeFromProcess, accountType: ' + accountType); + }).catch((err) => { + console.log('getOsAccountTypeFromProcess err: ' + JSON.stringify(err)); + }); ``` -### getBundleIdFromUid9+ +### getDistributedVirtualDeviceId(deprecated) -getBundleIdFromUid(uid: number, callback: AsyncCallback<number>): void; +getDistributedVirtualDeviceId(callback: AsyncCallback<string>): void -通过uid查询对应的bundleId。 +获取分布式虚拟设备ID。使用callback异步回调。 + +> **说明:** 从API version 9开始废弃,建议使用[queryDistributedVirtualDeviceId](#querydistributedvirtualdeviceid9) +> +> 从 API version 7开始支持。 -此接口为系统接口,三方应用不支持调用。 +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ------------------------------------------------------------ | -| uid | number | 是 | 进程uid。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回的是与uid对应的bundleId。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------------------------------- | +| callback | AsyncCallback<string> | 是 | 回调函数。如果获取成功,err为null,data为分布式虚拟设备ID;否则为错误对象。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let testUid = 1000000; - try { - accountManager.getBundleIdFromUid(testUid, (err, bundleId) => { - console.info('getBundleIdFromUid errInfo:' + JSON.stringify(err)); - console.info('getBundleIdFromUid bundleId:' + JSON.stringify(bundleId)); - }); - } catch (e) { - console.info('getBundleIdFromUid exception:' + JSON.stringify(e)); - } + accountManager.getDistributedVirtualDeviceId((err, virtualID) => { + console.log('getDistributedVirtualDeviceId err: ' + JSON.stringify(err)); + console.log('getDistributedVirtualDeviceId virtualID: ' + virtualID); + }); ``` -### getBundleIdFromUid9+ -getBundleIdFromUid(uid: number): Promise<number>; +### getDistributedVirtualDeviceId(deprecated) -通过uid查询对应的bundleId。 +getDistributedVirtualDeviceId(): Promise<string> -此接口为系统接口,三方应用不支持调用。 +获取分布式虚拟设备ID。使用Promise异步回调。 -**系统能力:** SystemCapability.Account.OsAccount +> **说明:** 从API version 9开始废弃,建议使用[queryDistributedVirtualDeviceId](#querydistributedvirtualdeviceid9-1) +> +> 从 API version 7开始支持。 -**参数:** +**需要权限:** ohos.permission.DISTRIBUTED_DATASYNC -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| uid | number | 是 | 进程uid。 | +**系统能力:** SystemCapability.Account.OsAccount **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回的是与uid对应的bundleId。 | +| 类型 | 说明 | +| --------------------- | --------------------------------- | +| Promise<string> | Promise对象,返回分布式虚拟设备ID。 | **示例:** ```js let accountManager = account_osAccount.getAccountManager(); - let testUid = 1000000; - try { - accountManager.getBundleIdFromUid(testUid).then((result) => { - console.info('getBundleIdFromUid bundleId:' + JSON.stringify(result)); - }).catch((err)=>{ - console.info('getBundleIdFromUid errInfo:' + JSON.stringify(err)); - }); - } catch (e) { - console.info('getBundleIdFromUid exception:' + JSON.stringify(e)); - } + accountManager.getDistributedVirtualDeviceId().then((virtualID) => { + console.log('getDistributedVirtualDeviceId, virtualID: ' + virtualID); + }).catch((err) => { + console.log('getDistributedVirtualDeviceId err: ' + JSON.stringify(err)); + }); ``` -### isMainOsAccount9+ - -isMainOsAccount(callback: AsyncCallback<boolean>): void; +### getOsAccountLocalIdBySerialNumber(deprecated) -查询当前进程是否处于主用户。 +getOsAccountLocalIdBySerialNumber(serialNumber: number, callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +通过SN码查询与其关联的系统帐号的帐号ID。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdBySerialNumber](#queryosaccountlocalidbyserialnumber9) +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ------------------------------------------------------------ | -| callback | AsyncCallback<boolean> | 是 | 回调结果,返回的是当前进程是否处于主用户,是则返回true,否则返回false。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | --------------------------- | ---- | -------------------------------------------------------------------------------- | +| serialNumber | number | 是 | 帐号SN码。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果查询成功,err为null,data为与SN码关联的系统帐号的帐号ID;否则为错误对象。 | -**示例:** +**示例:** 查询与SN码12345关联的系统帐号的ID ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.isMainOsAccount((err,result)=>{ - console.info('isMainOsAccount errInfo:' + JSON.stringify(err)); - console.info('isMainOsAccount result:' + JSON.stringify(result)); - }); - } catch (e) { - console.info('isMainOsAccount exception:' + JSON.stringify(e)); - } + let serialNumber = 12345; + accountManager.getOsAccountLocalIdBySerialNumber(serialNumber, (err, localId)=>{ + console.log('ger localId err:' + JSON.stringify(err)); + console.log('get localId:' + localId + ' by serialNumber: ' + serialNumber); + }); ``` -### isMainOsAccount9+ -isMainOsAccount(): Promise<boolean>; +### getOsAccountLocalIdBySerialNumber(deprecated) -查询当前进程是否处于主用户。 +getOsAccountLocalIdBySerialNumber(serialNumber: number): Promise<number> -此接口为系统接口,三方应用不支持调用。 +通过SN码查询与其关联的系统帐号的帐号ID。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[queryOsAccountLocalIdBySerialNumber](#queryosaccountlocalidbyserialnumber9-1) +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.OsAccount +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ------ | ---- | ---------- | +| serialNumber | number | 是 | 帐号SN码。 | + **返回值:** | 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<boolean> | Promise实例,用于获取异步返回结果,回调结果,返回的是当前进程是否处于主用户,是则返回true,否则返回false。 | +| --------------------- | -------------------------------------------- | +| Promise<number> | Promise对象,返回与SN码关联的系统帐号的帐号ID。 | -**示例:** +**示例:** 查询与SN码12345关联的系统帐号的ID ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.isMainOsAccount().then((result) => { - console.info('isMainOsAccount result:' + JSON.stringify(result)); - }).catch((err)=>{ - console.info('isMainOsAccount errInfo:' + JSON.stringify(err)); - }); - } catch (e) { - console.info('isMainOsAccount exception:' + JSON.stringify(e)); - } + let serialNumber = 12345; + accountManager.getOsAccountLocalIdBySerialNumber(serialNumber).then((localId) => { + console.log('getOsAccountLocalIdBySerialNumber localId: ' + localId); + }).catch((err) => { + console.log('getOsAccountLocalIdBySerialNumber err: ' + JSON.stringify(err)); + }); ``` -### queryOsAccountConstraintSourceTypes9+ -queryOsAccountConstraintSourceTypes(localId: number, constraint: string, callback: AsyncCallback<Array<ConstraintSourceTypeInfo>>): void; +### getSerialNumberByOsAccountLocalId(deprecated) -查询指定系统帐号的指定约束来源信息。 +getSerialNumberByOsAccountLocalId(localId: number, callback: AsyncCallback<number>): void -此接口为系统接口,三方应用不支持调用。 +通过系统帐号ID获取与该系统帐号关联的SN码。使用callback异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[querySerialNumberByOsAccountLocalId](#queryserialnumberbyosaccountlocalid9) +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ------------------------------------------------------------ | -| localId | number | 是 | 要查询的系统帐号ID | -| constraint | string | 是 | 要查询的[约束](#系统帐号约束列表)名称 | -| callback | AsyncCallback<Array<[ConstraintSourceTypeInfo](#constraintsourcetypeinfo)>> | 是 | 回调结果,返回的是指定系统帐号的指定[约束](#系统帐号约束列表)来源信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------- | ---- | --------------------------------------------------------------------------- | +| localId | number | 是 | 系统帐号ID。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果获取成功,err为null,data为与该系统帐号关联的SN码;否则为错误对象。 | -**示例:** +**示例:** 获取ID为100的系统帐号关联的SN码 ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.queryOsAccountConstraintSourceTypes(100, 'constraint.wifi',(err,sourceTypeInfos)=>{ - console.info('queryOsAccountConstraintSourceType errInfo:' + JSON.stringify(err)); - console.info('queryOsAccountConstraintSourceType sourceTypeInfos:' + JSON.stringify(sourceTypeInfos)); - }); - } catch (e) { - console.info('queryOsAccountConstraintSourceType exception:' + JSON.stringify(e)); - } + let localId = 100; + accountManager.getSerialNumberByOsAccountLocalId(localId, (err, serialNumber)=>{ + console.log('ger serialNumber err:' + JSON.stringify(err)); + console.log('get serialNumber:' + serialNumber + ' by localId: ' + localId); + }); ``` -### queryOsAccountConstraintSourceTypes9+ - -queryOsAccountConstraintSourceTypes(localId: number, constraint: string): Promise<Array<ConstraintSourceTypeInfo>>; +### getSerialNumberByOsAccountLocalId(deprecated) -查询指定系统帐号的指定约束来源信息。 +getSerialNumberByOsAccountLocalId(localId: number): Promise<number> -此接口为系统接口,三方应用不支持调用。 +通过系统帐号ID获取与该系统帐号关联的SN码。使用Promise异步回调。 -**需要权限:** ohos.permission.MANAGE_LOCAL_ACCOUNTS 或 ohos.permission.GET_LOCAL_ACCOUNTS +> **说明:** 从API version 9开始废弃,建议使用[querySerialNumberByOsAccountLocalId](#queryserialnumberbyosaccountlocalid9-1) +> +> 从 API version 8开始支持。 **系统能力:** SystemCapability.Account.OsAccount **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------ | -| localId | number | 是 | 要查询的系统帐号ID | -| constraint | string | 是 | 要查询的[约束](#系统帐号约束列表)名称 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ----------- | +| localId | number | 是 | 系统帐号ID。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :----------------------------------------------------------- | -| Promise<Array<[ConstraintSourceTypeInfo](#constraintsourcetypeinfo)>> | Promise实例,用于获取异步返回结果,返回的是指定系统帐号的指定[约束](#系统帐号约束列表)来源信息。 | +| 类型 | 说明 | +| --------------------- | -------------------------------------- | +| Promise<number> | Promise对象,返回与该系统帐号关联的SN码。 | -**示例:** +**示例:** 获取ID为100的系统帐号关联的SN码 ```js let accountManager = account_osAccount.getAccountManager(); - try { - accountManager.queryOsAccountConstraintSourceTypes(100, 'constraint.wifi').then((result) => { - console.info('queryOsAccountConstraintSourceType sourceTypeInfos:' + JSON.stringify(result)); - }).catch((err)=>{ - console.info('queryOsAccountConstraintSourceType errInfo:' + JSON.stringify(err)); - }); - } catch (e) { - console.info('queryOsAccountConstraintSourceType exception:' + JSON.stringify(e)); - } + let localId = 100; + accountManager.getSerialNumberByOsAccountLocalId(localId).then((serialNumber) => { + console.log('getSerialNumberByOsAccountLocalId serialNumber: ' + serialNumber); + }).catch((err) => { + console.log('getSerialNumberByOsAccountLocalId err: ' + JSON.stringify(err)); + }); ``` ## UserAuth8+ 用户认证类。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### constructor8+ @@ -3236,7 +3556,7 @@ constructor() 创建用户认证的实例。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力**:SystemCapability.Account.OsAccount @@ -3252,7 +3572,7 @@ getVersion(): number; 返回版本信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3275,7 +3595,7 @@ getAvailableStatus(authType: AuthType, authTrustLevel: AuthTrustLevel): number; 检查身份认证功能是否可用。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3311,9 +3631,9 @@ getAvailableStatus(authType: AuthType, authTrustLevel: AuthTrustLevel): number; getProperty(request: GetPropertyRequest, callback: AsyncCallback<ExecutorProperty>): void; -基于指定的请求信息获取属性,使用callback回调异步返回结果。 +基于指定的请求信息获取属性。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3324,7 +3644,7 @@ getProperty(request: GetPropertyRequest, callback: AsyncCallback<ExecutorProp | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------------------------------------------------------- | ---- | ---------------------------------- | | request | [GetPropertyRequest](#getpropertyrequest8) | 是 | 请求信息,包括认证类型和属性类型列表。 | -| callback | AsyncCallback<[ExecutorProperty](#executorproperty8)> | 是 | 回调结果,返回的是调用者属性。 | +| callback | AsyncCallback<[ExecutorProperty](#executorproperty8)> | 是 | 回调函数。如果获取成功,err为null,data为执行器属性信息;否则为错误对象。 | **示例:** ```js @@ -3352,9 +3672,9 @@ getProperty(request: GetPropertyRequest, callback: AsyncCallback<ExecutorProp getProperty(request: GetPropertyRequest): Promise<ExecutorProperty>; -基于指定的请求信息获取属性,使用Promise方式异步返回结果。 +基于指定的请求信息获取属性。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3370,7 +3690,7 @@ getProperty(request: GetPropertyRequest): Promise<ExecutorProperty>; | 类型 | 说明 | | :---------------------------------------------------------------- | :-------------------------------------------------- | -| Promise<[ExecutorProperty](#executorproperty8)> | Promise实例,用于获取异步返回结果,返回的是调用者属性。 | +| Promise<[ExecutorProperty](#executorproperty8)> | Promise对象,返回执行者属性信息。 | **示例:** ```js @@ -3399,9 +3719,9 @@ getProperty(request: GetPropertyRequest): Promise<ExecutorProperty>; setProperty(request: SetPropertyRequest, callback: AsyncCallback<number>): void; -设置可用于初始化算法的属性,使用callback回调异步返回结果。 +设置可用于初始化算法的属性。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3412,7 +3732,7 @@ setProperty(request: SetPropertyRequest, callback: AsyncCallback<number>): | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------------------------------------- | ---- | ---------------------------------------------------------------------- | | request | [SetPropertyRequest](#setpropertyrequest8)| 是 | 请求信息,包括认证类型和要设置的密钥值。 | -| callback | AsyncCallback<number> | 是 | 回调结果,返回一个[数值](#resultcode8),指示属性设置是否成功。 | +| callback | AsyncCallback<number> | 是 | 回调函数。如果设置成功,err为null,data为一个[数值](#resultcode8),指示属性设置是否成功;否则为错误对象。 | **示例:** ```js @@ -3436,9 +3756,9 @@ setProperty(request: SetPropertyRequest, callback: AsyncCallback<number>): setProperty(request: SetPropertyRequest): Promise<number>; -设置可用于初始化算法的属性,使用Promise方式异步返回结果。 +设置可用于初始化算法的属性。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3446,15 +3766,15 @@ setProperty(request: SetPropertyRequest): Promise<number>; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------------------------ | ---- | ---------------------------------------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------ | ---- | ---------------------------------------- | | request | [SetPropertyRequest](#setpropertyrequest8) | 是 | 请求信息,包括身份验证类型和要设置的密钥值。 | **返回值:** -| 类型 | 说明 | -| :-------------------- | :-------------------------------------------------------------------------------------------- | -| Promise<number> | Promise实例,用于获取异步返回结果,返回一个[数值](#resultcode8),指示属性设置是否成功。 | +| 类型 | 说明 | +| :-------------------- | :------------------------------------------------------------ | +| Promise<number> | Promise对象,返回一个[数值](#resultcode8),指示属性设置是否成功。 | **示例:** ```js @@ -3479,9 +3799,9 @@ setProperty(request: SetPropertyRequest): Promise<number>; auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; -执行认证,使用callback回调异步返回结果。 +执行认证。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3491,10 +3811,10 @@ auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, | 参数名 | 类型 | 必填 | 说明 | | --------------- | ---------------------------------------------------- | --- | ------------------------------------ | -| challenge | Uint8Array | 是 | 指示挑战值,挑战值为一个随机数,用于提升安全性。| +| challenge | Uint8Array | 是 | 指示挑战值,挑战值为一个随机数,用于提升安全性。| | authType | [AuthType](#authtype8) | 是 | 指示认证类型。 | | authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是 | 指示认证结果的信任级别。 | -| callback | [IUserAuthCallback](#iuserauthcallback8) | 是 | 回调结果,返回的是结果和所获取的信息。 | +| callback | [IUserAuthCallback](#iuserauthcallback8) | 是 | 回调对象,返回认证结果。 | **返回值:** @@ -3525,9 +3845,9 @@ auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, authUser(userId: number, challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; -执行用户认证,使用callback回调异步返回结果。 +执行用户认证。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3541,7 +3861,7 @@ authUser(userId: number, challenge: Uint8Array, authType: AuthType, authTrustLev | challenge | Uint8Array | 是 | 指示挑战值,挑战值为一个随机数,用于提升安全性。 | | authType | [AuthType](#authtype8) | 是 | 指示认证类型。 | | authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是 | 指示认证结果的信任级别。 | -| callback | [IUserAuthCallback](#iuserauthcallback8) | 是 | 回调结果,返回的是结果和所获取的信息。 | +| callback | [IUserAuthCallback](#iuserauthcallback8) | 是 | 回调对象,返回认证结果。 | **返回值:** @@ -3575,7 +3895,7 @@ cancelAuth(contextID: Uint8Array): void; 取消特定的认证。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3609,7 +3929,7 @@ cancelAuth(contextID: Uint8Array): void; Pin码认证功能基类。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### constructor8+ @@ -3617,7 +3937,7 @@ constructor() 创建Pin码认证的实例。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力**:SystemCapability.Account.OsAccount @@ -3632,7 +3952,7 @@ registerInputer(inputer: IInputer): boolean; 注册输入器。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3672,7 +3992,7 @@ unregisterInputer(): void; 卸载输入器。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3688,7 +4008,7 @@ unregisterInputer(): void; 获取用户身份管理类。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### constructor8+ @@ -3696,7 +4016,7 @@ constructor() 创建用户认证的实例。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力**:SystemCapability.Account.OsAccount @@ -3709,9 +4029,9 @@ constructor() openSession(callback: AsyncCallback<Uint8Array>): void; -打开会话,启动IDM操作以获取挑战值,使用callback回调异步返回结果。 +打开会话,启动IDM操作以获取挑战值。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3719,9 +4039,9 @@ openSession(callback: AsyncCallback<Uint8Array>): void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------- | ---- | -------------------------------- | -| callback | AsyncCallback<Uint8Array> | 是 | 回调结果,返回的是挑战值,非0即成功,为0则失败。| +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------- | ---- | -------------------------------------------------------------- | +| callback | AsyncCallback<Uint8Array> | 是 | 回调函数。如果打开会话成功,err为null,data为挑战值;否则为错误对象。| **示例:** ```js @@ -3740,9 +4060,9 @@ openSession(callback: AsyncCallback<Uint8Array>): void; openSession(): Promise<Uint8Array>; -打开会话,启动IDM操作以获取挑战值,使用Promise方式异步返回结果。 +打开会话,启动IDM操作以获取挑战值。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3750,9 +4070,9 @@ openSession(): Promise<Uint8Array>; **返回值:** -| 类型 | 说明 | -| :------------------------ | :------------------------------------------------------- | -| Promise<Uint8Array> | Promise实例,用于获取异步返回结果,返回的是挑战值,非0即成功,为0则失败。| +| 类型 | 说明 | +| :------------------------ | ----------------------- | +| Promise<Uint8Array> | Promise对象,返回挑战值。 | **示例:** ```js @@ -3772,9 +4092,9 @@ openSession(): Promise<Uint8Array>; addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; -添加凭据,添加用户凭据信息,传入凭据添加方法和凭据信息(凭据类型,子类,如果添加用户的非密码凭据,则传入密码身份验证令牌),并获取结果/获取信息,使用callback回调异步返回结果。 +添加凭据,添加用户凭据信息,传入凭据添加方法和凭据信息(凭据类型,子类,如果添加用户的非密码凭据,则传入密码身份验证令牌),并获取结果/获取信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3782,10 +4102,10 @@ addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------------- | ------------------------------------------------ | --- | -------------------------------- | -| credentialInfo | [CredentialInfo](#credentialinfo8) | 是 | 指示凭据信息。 | -| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调结果,返回的是结果和获取信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------------- | ------------------------------ ----- | --- | ---------------------------- | +| credentialInfo | [CredentialInfo](#credentialinfo8) | 是 | 指示凭据信息。 | +| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调对象,返回添加凭据的结果。 | **示例:** ```js @@ -3820,9 +4140,9 @@ addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; -更新凭据,使用callback回调异步返回结果。 +更新凭据。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3830,10 +4150,10 @@ updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| --------------- | ------------------------------------------------- | --- | -------------------------------- | -| credentialInfo | [CredentialInfo](#credentialinfo8) | 是 | 指示凭据信息。 | -| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调结果,返回的是结果和获取信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| --------------- | ------------------------------------- | --- | ------------------------- | +| credentialInfo | [CredentialInfo](#credentialinfo8) | 是 | 指示凭据信息。 | +| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调对象,返回更新凭据的结果。 | **示例:** ```js @@ -3877,9 +4197,9 @@ updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; closeSession(): void; -关闭会话,结束IDM操作 +关闭会话,结束IDM操作。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3897,7 +4217,7 @@ cancel(challenge: Uint8Array): void; 根据挑战值取消条目。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3927,7 +4247,7 @@ delUser(token: Uint8Array, callback: IIdmCallback): void; 删除具有身份验证令牌的用户,使用callback方式异步返回结果。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3935,10 +4255,10 @@ delUser(token: Uint8Array, callback: IIdmCallback): void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------------------------ | --- | ------------------------- | -| token | Uint8Array | 是 | 身份验证令牌。 | -| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调结果,返回的是删除结果。| +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------ | --- | ------------------------- | +| token | Uint8Array | 是 | 身份验证令牌。 | +| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调对象,返回删除用户的结果。| **示例:** ```js @@ -3960,9 +4280,9 @@ delUser(token: Uint8Array, callback: IIdmCallback): void; delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): void; -删除用户凭据信息,使用callback方式异步返回结果。 +删除用户凭据信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -3971,10 +4291,10 @@ delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): vo **参数:** | 参数名 | 类型 | 必填 | 说明 | -| --------------- | ----------------------------------------------- | --- | ---------------------------| -| credentialId | Uint8Array | 是 | 凭证索引。 | -| token | Uint8Array | 是 | 身份验证令牌。 | -| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调结果,返回的是删除结果。 | +| --------------- | ----------------------------------- | --- | ---------------------------| +| credentialId | Uint8Array | 是 | 凭证索引。 | +| token | Uint8Array | 是 | 身份验证令牌。 | +| callback | [IIdmCallback](#iidmcallback8) | 是 | 回调对象,返回删除凭据的结果。 | **示例:** ```js @@ -3997,9 +4317,9 @@ delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): vo getAuthInfo(callback: AsyncCallback<Array<EnrolledCredInfo>>): void; -获取认证信息,使用callback回调异步返回结果。 +获取认证信息。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4007,9 +4327,9 @@ getAuthInfo(callback: AsyncCallback<Array<EnrolledCredInfo>>): void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------------------------- | ---- | -------------------------------------------------- | -| callback | AsyncCallback<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | 是 | 回调结果,返回的是当前用户指定类型的所有已注册凭据信息。| +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------------------------------------------ | ---- | --------------------------------------------- | +| callback | AsyncCallback<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | 是 | 回调函数。如果成功,err为null,data为当前用户指定类型的所有已注册凭据信息;否则为错误对象。| **示例:** @@ -4029,9 +4349,9 @@ getAuthInfo(callback: AsyncCallback<Array<EnrolledCredInfo>>): void; getAuthInfo(authType: AuthType, callback: AsyncCallback<Array<EnrolledCredInfo>>): void; -获取指定类型的认证信息,使用callback回调异步返回结果。 +获取指定类型的认证信息。使用callback异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4042,7 +4362,12 @@ getAuthInfo(authType: AuthType, callback: AsyncCallback<Array<EnrolledCred | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------------- | ---- | -------------------------------------------------- | | authType | [AuthType](#authtype8) | 是 | 认证类型。 | -| callback | AsyncCallback<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | 是 | 回调结果,返回的是当前用户指定类型的所有已注册凭据信息。| +| callback | AsyncCallback<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | 是 | 回调函数,如果获取成功,err为null,data为当前用户指定类型的所有已注册凭据信息;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| 12300015 | Unsupported authType. | **示例:** ```js @@ -4061,9 +4386,9 @@ getAuthInfo(authType: AuthType, callback: AsyncCallback<Array<EnrolledCred getAuthInfo(authType?: AuthType): Promise<Array<EnrolledCredInfo>>; -获取认证信息,使用Promise方式异步返回结果。 +获取认证信息。使用Promise异步回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4073,13 +4398,18 @@ getAuthInfo(authType?: AuthType): Promise<Array<EnrolledCredInfo>>; | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------------------- | ---- | -------- | -| authType | [AuthType](#authtype8) | 否 | 认证类型。| +| authType | [AuthType](#authtype8) | 否 | 认证类型。| **返回值:** -| 类型 | 说明 | -| :------------------------------------------- | :------------------------------------------------------------------------ | -| Promise<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | Promise实例,用于获取异步返回结果,返回的是当前用户指定类型的所有已注册凭据信息。| +| 类型 | 说明 | +| :------------------------------------------- | :------------------------------------------------------------ ---------- | +| Promise<Array<[EnrolledCredInfo](#enrolledcredinfo8)>> | Promise对象,返回当前用户指定类型的所有已注册凭据信息。| + +**错误码:** + +| 错误码ID | 错误信息 | +| 12300015 | Unsupported authType. | **示例:** ```js @@ -4099,13 +4429,13 @@ getAuthInfo(authType?: AuthType): Promise<Array<EnrolledCredInfo>>; 密码数据回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### onSetData8+ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void; -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 通知设置数据。 @@ -4115,7 +4445,7 @@ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void; | 参数名 | 类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- | ----------------------------------------------- | -| pinSubType | [AuthSubType](#authsubtype8) | 是 | 用于认证的凭据子类型。 | +| pinSubType | [AuthSubType](#authsubtype8) | 是 | 用于认证的凭据子类型。 | | data | Uint8Array | 是 | 要设置的数据是凭据,用来在认证、添加、修改凭据操作。 | **示例:** @@ -4137,7 +4467,7 @@ onSetData: (pinSubType: AuthSubType, data: Uint8Array) => void; 密码输入框回调。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### onGetData8+ @@ -4145,7 +4475,7 @@ onGetData: (pinSubType: AuthSubType, callback: IInputData) => void; 通知获取数据。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4175,17 +4505,17 @@ onGetData: (pinSubType: AuthSubType, callback: IInputData) => void; ## IUserAuthCallback8+ -用户认证回调。 +表示用户认证回调类。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### onResult8+ onResult: (result: number, extraInfo: AuthResult) => void; -身份认证结果代码通过回调返回。 +身份认证结果回调函数,返回结果码和认证结果信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4210,9 +4540,9 @@ onResult: (result: number, extraInfo: AuthResult) => void; onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; -在身份验证期间,TipsCode通过回调返回。 +身份认证信息获取回调函数。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4241,17 +4571,17 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## IIdmCallback8+ -身份管理回调。 +表示身份管理回调类。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 ### onResult8+ onResult: (result: number, extraInfo: RequestResult) => void; -身份认证结果代码通过回调返回。 +身份管理操作结果回调函数,返回结果码和请求结果信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4276,9 +4606,9 @@ onResult: (result: number, extraInfo: RequestResult) => void; onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; -在身份验证期间,TipsCode通过回调返回。 +身份管理信息获取回调函数。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** SystemCapability.Account.OsAccount @@ -4309,7 +4639,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; 提供获取属性请求的信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4322,7 +4652,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; 提供设置属性请求的信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4336,7 +4666,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; 提供执行器的属性。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4349,9 +4679,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## AuthResult8+ -指示认证结果的信息。 +表示认证结果的信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4363,9 +4693,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## CredentialInfo8+ -指示凭证信息。 +表示凭证信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4377,9 +4707,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## RequestResult8+ -指示请求结果的信息。 +表示请求结果的信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4389,9 +4719,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## EnrolledCredInfo8+ -指示已注册凭据的信息。 +表示已注册凭据的信息。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4404,9 +4734,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## GetPropertyType8+ -枚举,指示要获取的属性类型。 +表示要获取的属性类型的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4418,9 +4748,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## SetPropertyType8+ -枚举,指示要设置的属性类型。 +表示要设置的属性类型的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4430,9 +4760,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## AuthType8+ -枚举,指示身份验证的凭据类型。 +表示身份验证的凭据类型的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4443,9 +4773,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## AuthSubType8+ -枚举,指示用于认证的凭据子类型。 +表示用于认证的凭据子类型的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4459,9 +4789,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## AuthTrustLevel8+ -枚举,指示认证结果的受信任级别。 +表示认证结果的受信任级别的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4474,9 +4804,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## Module8+ -枚举,表示获取信息的模块。 +表示获取信息的模块的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4486,9 +4816,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## ResultCode8+ -枚举,指示身份验证结果代码。 +表示身份验证结果码。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4508,9 +4838,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## FaceTipsCode8+ -枚举,指示人脸验证过程中提示代码。 +表示人脸验证过程中提示的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4530,9 +4860,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## FingerprintTips8+ -枚举,指示指纹身份验证过程中提示代码。 +表示指纹身份验证过程中提示的枚举。 -此接口为系统接口,三方应用不支持调用。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount @@ -4547,7 +4877,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## OsAccountInfo -系统帐号信息。 +表示系统帐号信息。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount。 @@ -4569,7 +4899,7 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## DomainAccountInfo8+ -域帐号信息。 +表示域帐号信息。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount。 @@ -4648,9 +4978,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## ConstraintSourceTypeInfo9+ -约束来源类型信息。 +表示约束来源类型信息。 -此接口为系统接口。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount。 @@ -4661,9 +4991,9 @@ onAcquireInfo?: (module: number, acquire: number, extraInfo: any) => void; ## ConstraintSourceType9+ -枚举,约束来源类型。 +表示约束来源类型的枚举。 -此接口为系统接口。 +**系统接口:** 此接口为系统接口。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Account.OsAccount。 diff --git a/zh-cn/application-dev/reference/apis/js-apis-request.md b/zh-cn/application-dev/reference/apis/js-apis-request.md index 1ba8a552f29850c589f0f192910fd6e7bb740ee7..c379b82a1b868a981002f162727565e9eb3dd773 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-request.md +++ b/zh-cn/application-dev/reference/apis/js-apis-request.md @@ -33,6 +33,7 @@ var config = { 在开发stage模型下的应用程序时,不涉及属性标识 "cleartextTraffic"。 +下载服务器需要支持http协议的header方法,能够通过content-length获取下载数据大小,否则下载任务失败,可通过[on('fail')7+)](#onfail7)查看失败原因。 ## 常量 @@ -53,6 +54,8 @@ var config = { | ERROR_INSUFFICIENT_SPACE7+ | number | 是 | 否 | 存储空间不足。 | | ERROR_TOO_MANY_REDIRECTS7+ | number | 是 | 否 | 网络重定向过多导致的错误。 | | ERROR_UNHANDLED_HTTP_CODE7+ | number | 是 | 否 | 无法识别的HTTP代码。 | +| ERROR_OFFLINE9+ | number | 是 | 否 | 网络未连接。 | +| ERROR_UNSUPPORTED_NETWORK_TYPE9+ | number | 是 | 否 | 网络类型不匹配。 | | ERROR_UNKNOWN7+ | number | 是 | 否 | 未知错误。 | | PAUSED_QUEUED_FOR_WIFI7+ | number | 是 | 否 | 下载被暂停并等待WLAN连接,因为文件大小超过了使用蜂窝网络的会话允许的最大值。 | | PAUSED_UNKNOWN7+ | number | 是 | 否 | 未知原因导致暂停下载。 | @@ -73,6 +76,8 @@ upload(config: UploadConfig): Promise<UploadTask> 此接口仅可在FA模型下使用 +> **说明:** 从API Version 9开始废弃,建议使用[request.uploadFile9+](#requestuploadfile9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -116,6 +121,8 @@ upload(config: UploadConfig, callback: AsyncCallback<UploadTask>): void 此接口仅可在FA模型下使用 +> **说明:** 从API Version 9开始废弃,建议使用[request.uploadFile9+](#requestuploadfile9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -152,6 +159,8 @@ upload(context: BaseContext, config: UploadConfig): Promise<UploadTask> 上传,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.uploadFile9+](#requestuploadfile9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -195,6 +204,8 @@ upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback<Up 上传,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.uploadFile9+](#requestuploadfile9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -227,6 +238,103 @@ upload(context: BaseContext, config: UploadConfig, callback: AsyncCallback<Up }); ``` + +## request.uploadFile9+ + +uploadFile(context: BaseContext, config: UploadConfig): Promise<UploadTask> + +上传,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Upload + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| context | BaseContext | 是 | 基于应用程序的上下文。 | +| config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 | + + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<[UploadTask](#uploadtask)> | 返回上传任务。 | + +**错误码:** +以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcodes-request.md)。 + +| 错误码ID | 错误码信息 | +| -------- | -------- | +| 13400002 | Bad file path. | + +**示例:** + + ```js + let uploadTask; + let uploadConfig = { + url: 'https://patch', + header: { key1: "value1", key2: "value2" }, + method: "POST", + files: { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }, + data: { name: "name123", value: "123" }, + }; + request.uploadFile(globalThis.abilityContext, uploadConfig).then((data) => { + uploadTask = data; + }).catch((err) => { + console.error('Failed to request the upload. Cause: ' + JSON.stringify(err)); + }); + ``` + + +## request.uploadFile9+ + +uploadFile(context: BaseContext, config: UploadConfig, callback: AsyncCallback<UploadTask>): void + +上传,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Upload + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| context | BaseContext | 是 | 基于应用程序的上下文。 | +| config | [UploadConfig](#uploadconfig) | 是 | 上传的配置信息。 | +| callback | AsyncCallback<[UploadTask](#uploadtask)> | 否 | 回调函数,异步返回UploadTask对象。 | + +**错误码:** +以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcodes-request.md)。 + +| 错误码ID | 错误码信息 | +| -------- | -------- | +| 13400002 | Bad file path. | + +**示例:** + + ```js + let uploadTask; + let uploadConfig = { + url: 'https://patch', + header: { key1: "value1", key2: "value2" }, + method: "POST", + files: [{ filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" }], + data: [{ name: "name123", value: "123" }], + }; + request.uploadFile(globalThis.abilityContext, uploadConfig, (err, data) => { + if (err) { + console.error('Failed to request the upload. Cause: ' + JSON.stringify(err)); + return; + } + uploadTask = data; + }); + ``` + + ## UploadTask 上传任务,使用下列方法前,需要先获取UploadTask对象。 @@ -455,6 +563,8 @@ remove(): Promise<boolean> 移除上传的任务,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[delete9+](#delete9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -486,6 +596,8 @@ remove(callback: AsyncCallback<boolean>): void 移除上传的任务,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[delete9+](#delete9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Upload @@ -513,6 +625,70 @@ remove(callback: AsyncCallback<boolean>): void ``` +### delete9+ + +delete(): Promise<boolean> + +移除上传的任务,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Upload + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<boolean> | 移除任务是否成功。true:成功,false:不成功。 | + +**示例:** + + ```js + uploadTask.delete().then((result) => { + if (result) { + console.info('Upload task removed successfully. '); + } else { + console.error('Failed to remove the upload task. '); + } + }).catch((err) => { + console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err)); + }); + ``` + + +### delete9+ + +delete(callback: AsyncCallback<boolean>): void + +移除上传的任务,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Upload + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<boolean> | 是 | 移除任务的回调函数。 | + +**示例:** + + ```js + uploadTask.delete((err, result) => { + if (err) { + console.error('Failed to remove the upload task. Cause: ' + JSON.stringify(err)); + return; + } + if (result) { + console.info('Upload task removed successfully.'); + } else { + console.error('Failed to remove the upload task.'); + } + }); + ``` + + ## UploadConfig **需要权限**:ohos.permission.INTERNET @@ -543,21 +719,21 @@ remove(callback: AsyncCallback<boolean>): void **需要权限**:ohos.permission.INTERNET -**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download +**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。 | 名称 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | -| filename | string | 否 | multipart提交时,请求头中的文件名。 | -| name | string | 否 | multipart提交时,表单项目的名称,缺省为file。 | +| filename | string | 是 | multipart提交时,请求头中的文件名。 | +| name | string | 是 | multipart提交时,表单项目的名称,缺省为file。 | | uri | string | 是 | 文件的本地存储路径。
支持“dataability”和“internal”两种协议类型,但“internal”仅支持临时目录,示例:
dataability:///com.domainname.dataability.persondata/person/10/file.txt
internal://cache/path/to/file.txt | -| type | string | 否 | 文件的内容类型,默认根据文件名或路径的后缀获取。 | +| type | string | 是 | 文件的内容类型,默认根据文件名或路径的后缀获取。 | ## RequestData **需要权限**:ohos.permission.INTERNET -**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Download +**系统能力**: 以下各项对应的系统能力均为SystemCapability.MiscServices.Upload。 | 名称 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | @@ -571,6 +747,8 @@ download(config: DownloadConfig): Promise<DownloadTask> 下载,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.downloadFile9+](#requestdownloadfile9)替代。 + 此接口仅可在FA模型下使用 **需要权限**:ohos.permission.INTERNET @@ -607,6 +785,8 @@ download(config: DownloadConfig, callback: AsyncCallback<DownloadTask>): v 下载,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.downloadFile9+](#requestdownloadfile9-1)替代。 + 此接口仅可在FA模型下使用 **需要权限**:ohos.permission.INTERNET @@ -640,6 +820,8 @@ download(context: BaseContext, config: DownloadConfig): Promise<DownloadTask& 下载,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.downloadFile9+](#requestdownloadfile9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -675,6 +857,8 @@ download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&l 下载,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[request.downloadFile9+](#requestdownloadfile9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -700,6 +884,94 @@ download(context: BaseContext, config: DownloadConfig, callback: AsyncCallback&l downloadTask = data; }); ``` + + +## request.downloadFile9+ + +downloadFile(context: BaseContext, config: DownloadConfig): Promise<DownloadTask> + +下载,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| context | BaseContext | 是 | 基于应用程序的上下文。 | +| config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 | + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<[DownloadTask](#downloadtask)> | 返回下载任务。 | + +**错误码:** +以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcodes-request.md)。 + +| 错误码ID | 错误码信息 | +| -------- | -------- | +| 13400001 | File operation error. | +| 13400002 | Bad file path. | +| 13400003 | Task manager service error. | + +**示例:** + + ```js + let downloadTask; + request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxx.hap' }).then((data) => { + downloadTask = data; + }).catch((err) => { + console.error('Failed to request the download. Cause: ' + JSON.stringify(err)); + }) + ``` + + +## request.downloadFile9+ + +downloadFile(context: BaseContext, config: DownloadConfig, callback: AsyncCallback<DownloadTask>): void; + +下载,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| context | BaseContext | 是 | 基于应用程序的上下文。 | +| config | [DownloadConfig](#downloadconfig) | 是 | 下载的配置信息。 | +| callback | AsyncCallback<[DownloadTask](#downloadtask)> | 否 | 下载接口的回调函数。 | + +**错误码:** +以下错误码的详细介绍请参见[上传下载错误码](../errorcodes/errorcodes-request.md)。 + +| 错误码ID | 错误码信息 | +| -------- | -------- | +| 13400001 | File operation error. | +| 13400002 | Bad file path. | +| 13400003 | Task manager service error. | + +**示例:** + + ```js + let downloadTask; + request.downloadFile(globalThis.abilityContext, { url: 'https://xxxx/xxxxx.hap', + filePath: 'xxx/xxxxx.hap'}, (err, data) => { + if (err) { + console.error('Failed to request the download. Cause: ' + JSON.stringify(err)); + return; + } + downloadTask = data; + }); + ``` + + ## DownloadTask 下载任务。 @@ -899,6 +1171,8 @@ remove(): Promise<boolean> 移除下载的任务,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[delete9+](#delete9-2)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -930,6 +1204,8 @@ remove(callback: AsyncCallback<boolean>): void 移除下载的任务,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[delete9+](#delete9-3)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -963,6 +1239,8 @@ query(): Promise<DownloadInfo> 查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。 +> **说明:** 从API Version 9开始废弃,建议使用[getTaskInfo9+](#gettaskinfo9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -989,6 +1267,8 @@ query(callback: AsyncCallback<DownloadInfo>): void 查询下载的任务,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[getTaskInfo9+](#gettaskinfo9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -1018,6 +1298,8 @@ queryMimeType(): Promise<string> 查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[getTaskMimeType9+](#gettaskmimetype9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -1045,6 +1327,8 @@ queryMimeType(callback: AsyncCallback<string>): void; 查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[getTaskMimeType9+](#gettaskmimetype9-1)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -1074,6 +1358,8 @@ pause(): Promise<void> 暂停下载任务,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[suspend9+](#suspend9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -1103,6 +1389,8 @@ pause(): Promise<void> pause(callback: AsyncCallback<void>): void +> **说明:** 从API Version 9开始废弃,建议使用[suspend9+](#suspend9-1)替代。 + 暂停下载任务,异步方法,使用callback形式返回结果。 **需要权限**:ohos.permission.INTERNET @@ -1138,6 +1426,8 @@ resume(): Promise<void> 重新启动暂停的下载任务,异步方法,使用promise形式返回结果。 +> **说明:** 从API Version 9开始废弃,建议使用[restore9+](#restore9)替代。 + **需要权限**:ohos.permission.INTERNET **系统能力**: SystemCapability.MiscServices.Download @@ -1168,6 +1458,8 @@ resume(): Promise<void> resume(callback: AsyncCallback<void>): void +> **说明:** 从API Version 9开始废弃,建议使用[restore9+](#restore9-1)替代。 + 重新启动暂停的下载任务,异步方法,使用callback形式返回结果。 **需要权限**:ohos.permission.INTERNET @@ -1197,6 +1489,310 @@ resume(callback: AsyncCallback<void>): void ``` +### delete9+ + +delete(): Promise<boolean> + +移除下载的任务,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<boolean> | 移除任务是否成功。 | + +**示例:** + + ```js + downloadTask.delete().then((result) => { + if (result) { + console.info('Download task removed.'); + } else { + console.error('Failed to remove the download task.'); + } + }).catch ((err) => { + console.error('Failed to remove the download task.'); + }); + ``` + + +### delete9+ + +delete(callback: AsyncCallback<boolean>): void + +移除下载的任务,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<boolean> | 是 | 移除任务是否成功。 | + +**示例:** + + ```js + downloadTask.delete((err, result)=>{ + if(err) { + console.error('Failed to remove the download task.'); + return; + } + if (result) { + console.info('Download task removed.'); + } else { + console.error('Failed to remove the download task.'); + } + }); + ``` + + +### getTaskInfo9+ + +getTaskInfo(): Promise<DownloadInfo> + +查询下载任务,异步方法,使用promise形式返回DownloadInfo里的信息。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** +| 类型 | 说明 | +| -------- | -------- | +| Promise<[DownloadInfo](#downloadinfo7)> | 查询下载任务信息。 | + +**示例:** + + ```js + downloadTask.getTaskInfo().then((downloadInfo) => { + console.info('Download task queried. Data:' + JSON.stringify(downloadInfo)) + }) .catch((err) => { + console.error('Failed to query the download task. Cause:' + err) + }); + ``` + + +### getTaskInfo9+ + +query(callback: AsyncCallback<DownloadInfo>): void + +查询下载的任务,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<[DownloadInfo](#downloadinfo7)> | 是 | 查询下载任务的回调函数。 | + +**示例:** + + ```js + downloadTask.getTaskInfo((err, downloadInfo)=>{ + if(err) { + console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err)); + } else { + console.info('download query success. data:'+ JSON.stringify(downloadInfo)); + } + }); + ``` + + +### getTaskMimeType9+ + +getTaskMimeType(): Promise<string> + +查询下载的任务的 MimeType,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<string> | 查询下载任务的MimeType。 | + +**示例:** + + ```js + downloadTask.getTaskMimeType().then((data) => { + console.info('Download task queried. Data:' + JSON.stringify(data)); + }).catch((err) => { + console.error('Failed to query the download MimeType. Cause:' + JSON.stringify(err)) + }); + ``` + + +### getTaskMimeType9+ + +getTaskMimeType(callback: AsyncCallback<string>): void; + +查询下载的任务的 MimeType,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<string> | 是 | 查询下载任务的MimeType的回调函数。 | + +**示例:** + + ```js + downloadTask.getTaskMimeType((err, data)=>{ + if(err) { + console.error('Failed to query the download mimeType. Cause:' + JSON.stringify(err)); + } else { + console.info('Download task queried. data:' + JSON.stringify(data)); + } + }); + ``` + + +### suspend9+ + +suspend(): Promise<void> + +暂停下载任务,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**返回值:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<void> | 暂停下载任务是否成功。 | + +**示例:** + + ```js + downloadTask.suspend().then((result) => { + if (result) { + console.info('Download task paused. '); + } else { + console.error('Failed to pause the download task. Cause:' + JSON.stringify(result)); + } + }).catch((err) => { + console.error('Failed to pause the download task. Cause:' + JSON.stringify(err)); + }); + ``` + + +### suspend9+ + +suspend(callback: AsyncCallback<void>): void + +暂停下载任务,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<void> | 是 | 暂停下载任务的回调函数。 | + +**示例:** + + ```js + downloadTask.suspend((err, result)=>{ + if(err) { + console.error('Failed to pause the download task. Cause:' + JSON.stringify(err)); + return; + } + if (result) { + console.info('Download task paused. '); + } else { + console.error('Failed to pause the download task. Cause:' + JSON.stringify(result)); + } + }); + ``` + + +### restore9+ + +restore(): Promise<void> + +重新启动暂停的下载任务,异步方法,使用promise形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 类型 | 说明 | + | -------- | -------- | +| Promise<void> | 重新启动暂停的下载任务是否成功。 | + +**示例:** + + ```js + downloadTask.restore().then((result) => { + if (result) { + console.info('Download task resumed.') + } else { + console.error('Failed to resume the download task. '); + } + console.info('Download task resumed.') + }).catch((err) => { + console.error('Failed to resume the download task. Cause:' + err); + }); + ``` + + +### restore9+ + +restore(callback: AsyncCallback<void>): void + +重新启动暂停的下载任务,异步方法,使用callback形式返回结果。 + +**需要权限**:ohos.permission.INTERNET + +**系统能力**: SystemCapability.MiscServices.Download + +**参数:** + +| 参数名 | 参数类型 | 必填 | 说明 | + | -------- | -------- | -------- | -------- | +| callback | AsyncCallback<void> | 是 | 重新启动暂停的下载任务的回调函数。 | + +**示例:** + + ```js + downloadTask.restore((err, result)=>{ + if (err) { + console.error('Failed to resume the download task. Cause:' + err); + return; + } + if (result) { + console.info('Download task resumed.'); + } else { + console.error('Failed to resume the download task.'); + } + }); + ``` + + ## DownloadConfig **需要权限**:ohos.permission.INTERNET diff --git a/zh-cn/application-dev/reference/apis/js-apis-usb-deprecated.md b/zh-cn/application-dev/reference/apis/js-apis-usb-deprecated.md new file mode 100644 index 0000000000000000000000000000000000000000..0c20c4b3b4aa03f528d7d8b7a23f6887a95c34cf --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-usb-deprecated.md @@ -0,0 +1,862 @@ +# USB管理 + +本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。 + +> **说明:** +> +> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> +> 从API version 9开始,该接口不再维护,推荐使用新接口[`@ohos.usbV9`](js-apis-usb.md)。 + +## 导入模块 + +```js +import usb from "@ohos.usb"; +``` + +## usb.getDevices + +getDevices(): Array<Readonly<USBDevice>> + +获取USB设备列表。 + +**系统能力:** SystemCapability.USB.USBManager + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------------------- | ------- | +| Array<Readonly<[USBDevice](#usbdevice)>> | 设备信息列表。 | + +**示例:** + +```js +let devicesList = usb.getDevices(); +console.log(`devicesList = ${JSON.stringify(devicesList)}`); +//devicesList 返回的数据结构 +//此处提供一个简单的示例,如下 +[ + { + name: "1-1", + serial: "", + manufacturerName: "", + productName: "", + version: "", + vendorId: 7531, + productId: 2, + clazz: 9, + subclass: 0, + protocol: 1, + devAddress: 1, + busNum: 1, + configs: [ + { + id: 1, + attributes: 224, + isRemoteWakeup: true, + isSelfPowered: true, + maxPower: 0, + name: "1-1", + interfaces: [ + { + id: 0, + protocol: 0, + clazz: 9, + subclass: 0, + alternateSetting: 0, + name: "1-1", + endpoints: [ + { + address: 129, + attributes: 3, + interval: 12, + maxPacketSize: 4, + direction: 128, + number: 1, + type: 3, + interfaceId: 0, + }, + ], + }, + ], + }, + ], + }, +] +``` + +## usb.connectDevice + +connectDevice(device: USBDevice): Readonly<USBDevicePipe> + +打开USB设备。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device,再调用[usb.requestRight](#usbrequestright)获取设备请求权限。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| device | [USBDevice](#usbdevice) | 是 | USB设备信息。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Readonly<[USBDevicePipe](#usbdevicepipe)> | 指定的传输通道对象。 | + +**示例:** + +```js +let devicepipe= usb.connectDevice(device); +console.log(`devicepipe = ${JSON.stringify(devicepipe)}`); +``` + +## usb.hasRight + +hasRight(deviceName: string): boolean + +判断是否有权访问该设备。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceName | string | 是 | 设备名称。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| boolean | true表示有访问设备的权限,false表示没有访问设备的权限。 | + +**示例:** + +```js +let devicesName="1-1"; +let bool = usb.hasRight(devicesName); +console.log(bool); +``` + +## usb.requestRight + +requestRight(deviceName: string): Promise<boolean> + +请求软件包的临时权限以访问设备。使用Promise异步回调。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceName | string | 是 | 设备名称。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Promise<boolean> | Promise对象,返回临时权限的申请结果。返回true表示临时权限申请成功;返回false则表示临时权限申请失败。 | + +**示例:** + +```js +let devicesName="1-1"; +usb.requestRight(devicesName).then((ret) => { + console.log(`requestRight = ${JSON.stringify(ret)}`); +}); +``` + +## usb.claimInterface + +claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number + +注册通信接口。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | +| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要获取接口的索引。 | +| force | boolean | 否 | 可选参数,是否强制获取。默认值为false ,表示不强制获取。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| number | 注册通信接口成功返回0;注册通信接口失败返回其他错误码。 | + +**示例:** + +```js +let ret = usb.claimInterface(devicepipe, interfaces); +console.log(`claimInterface = ${ret}`); +``` + +## usb.releaseInterface + +releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number + +释放注册过的通信接口。 + +需要调用[usb.claimInterface](#usbclaiminterface)先获取接口,才能使用此方法释放接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | +| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要释放接口的索引。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| number | 释放接口成功返回0;释放接口失败返回其他错误码。 | + +**示例:** + +```js +let ret = usb.releaseInterface(devicepipe, interfaces); +console.log(`releaseInterface = ${ret}`); +``` + +## usb.setConfiguration + +setConfiguration(pipe: USBDevicePipe, config: USBConfig): number + +设置设备配置。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及config;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | +| config | [USBConfig](#usbconfig) | 是 | 用于确定需要设置的配置。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| number | 设置设备配置成功返回0;设置设备配置失败返回其他错误码。 | + +**示例:** + +```js +let ret = usb.setConfiguration(devicepipe, config); +console.log(`setConfiguration = ${ret}`); +``` + +## usb.setInterface + +setInterface(pipe: USBDevicePipe, iface: USBInterface): number + +设置设备接口。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备列表以及interfaces;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数;调用[usb.claimInterface](#usbclaiminterface)注册通信接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ----- | ------------------------------- | --- | ------------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | +| iface | [USBInterface](#usbinterface) | 是 | 用于确定需要设置的接口。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| number | 设置设备接口成功返回0;设置设备接口失败返回其他错误码。 | + +**示例:** + +```js +let ret = usb.setInterface(devicepipe, interfaces); +console.log(`setInterface = ${ret}`); +``` + +## usb.getRawDescriptor + +getRawDescriptor(pipe: USBDevicePipe): Uint8Array + +获取原始的USB描述符。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Uint8Array | 返回获取的原始数据;失败返回undefined。 | + +**示例:** + +```js +let ret = usb.getRawDescriptor(devicepipe); +``` + +## usb.getFileDescriptor + +getFileDescriptor(pipe: USBDevicePipe): number + +获取文件描述符。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定总线号和设备地址。 | + +**返回值:** + +| 类型 | 说明 | +| ------ | -------------------- | +| number | 返回设备对应的文件描述符;失败返回-1。 | + +**示例:** + +```js +let ret = usb.getFileDescriptor(devicepipe); +``` + +## usb.controlTransfer + +controlTransfer(pipe: USBDevicePipe, contrlparam: USBControlParams, timeout?: number): Promise<number> + +控制传输。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)接口得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | +| contrlparam | [USBControlParams](#usbcontrolparams) | 是 | 控制传输参数。 | +| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | + +**示例:** + +```js +usb.controlTransfer(devicepipe, USBControlParams).then((ret) => { + console.log(`controlTransfer = ${JSON.stringify(ret)}`); +}) +``` + +## usb.bulkTransfer + +bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout?: number): Promise<number> + +批量传输。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备信息列表以及endpoint;再调用[usb.requestRight](#usbrequestright)获取设备请求权限;然后调用[usb.connectDevice](#usbconnectdevice)接口得到返回数据devicepipe之后,再次获取接口[usb.claimInterface](#usbclaiminterface);再调用usb.bulkTransfer接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定设备。 | +| endpoint | [USBEndpoint](#usbendpoint) | 是 | 用于确定传输的端口。 | +| buffer | Uint8Array | 是 | 用于写入或读取的缓冲区。 | +| timeout | number | 否 | 超时时间(单位:ms),可选参数,默认为0不超时。| + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| Promise<number> | Promise对象,获取传输或接收到的数据块大小。失败返回-1。 | + +**示例:** + +```js +//usb.getDevices 接口返回数据集合,取其中一个设备对象,并获取权限 。 +//把获取到的设备对象作为参数传入usb.connectDevice;当usb.connectDevice接口成功返回之后; +//才可以调用第三个接口usb.claimInterface.当usb.claimInterface 调用成功以后,再调用该接口。 +usb.bulkTransfer(devicepipe, endpoint, buffer).then((ret) => { + console.log(`bulkTransfer = ${JSON.stringify(ret)}`); +}); +``` + +## usb.closePipe + +closePipe(pipe: USBDevicePipe): number + +关闭设备消息控制通道。 + +需要调用[usb.getDevices](#usbgetdevices)获取设备列表;调用[usb.requestRight](#usbrequestright)获取设备请求权限;调用[usb.connectDevice](#usbconnectdevice)得到devicepipe作为参数。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| pipe | [USBDevicePipe](#usbdevicepipe) | 是 | 用于确定USB设备消息控制通道。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| number | 关闭设备消息控制通道成功返回0;关闭设备消息控制通道失败返回其他错误码。 | + +**示例:** + +```js +let ret = usb.closePipe(devicepipe); +console.log(`closePipe = ${ret}`); +``` + +## usb.usbFunctionsFromString9+ + +usbFunctionsFromString(funcs: string): number + +在设备模式下,将字符串形式的USB功能列表转化为数字掩码。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------------- | +| funcs | string | 是 | 字符串形式的功能列表。 | + +**返回值:** + +| 类型 | 说明 | +| ------ | ------------------ | +| number | 转化后的数字掩码。 | + +**示例:** + +```js +let funcs = "acm"; +let ret = usb.usbFunctionsFromString(funcs); +``` + +## usb.usbFunctionsToString9+ + +usbFunctionsToString(funcs: FunctionType): string + +在设备模式下,将数字掩码形式的USB功能列表转化为字符串。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------ | ---- | ----------------- | +| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | + +**返回值:** + +| 类型 | 说明 | +| ------ | ------------------------------ | +| string | 转化后的字符串形式的功能列表。 | + +**示例:** + +```js +let funcs = ACM | ECM; +let ret = usb.usbFunctionsToString(funcs); +``` + +## usb.setCurrentFunctions9+ + +setCurrentFunctions(funcs: FunctionType): Promise\ + +在设备模式下,设置当前的USB功能列表。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------ | ---- | ----------------- | +| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\ | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 | + +**示例:** + +```js +let funcs = HDC; +let ret = usb.setCurrentFunctions(funcs); +``` + +## usb.getCurrentFunctions9+ + +getCurrentFunctions(): FunctionType + +在设备模式下,获取当前的USB功能列表的数字组合掩码。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**返回值:** + +| 类型 | 说明 | +| ------------------------------ | --------------------------------- | +| [FunctionType](#functiontype9) | 当前的USB功能列表的数字组合掩码。 | + +**示例:** + +```js +let ret = usb.getCurrentFunctions(); +``` + +## usb.getPorts9+ + +getPorts(): Array\ + +获取所有物理USB端口描述信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**返回值:** + +| 类型 | 说明 | +| ----------------------------- | --------------------- | +| [Array\](#usbport9) | USB端口描述信息列表。 | + +**示例:** + +```js +let ret = usb.getPorts(); +``` + +## usb.getSupportedModes9+ + +getSupportedModes(portId: number): PortModeType + +获取指定的端口支持的模式列表的组合掩码。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | -------- | +| portId | number | 是 | 端口号。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------------------ | -------------------------- | +| [PortModeType](#portmodetype9) | 支持的模式列表的组合掩码。 | + +**示例:** + +```js +let ret = usb.getSupportedModes(0); +``` + +## usb.setPortRoles9+ + +setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise\ + +设置指定的端口支持的角色模式,包含充电角色、数据传输角色。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| --------- | -------------------------------- | ---- | ---------------- | +| portId | number | 是 | 端口号。 | +| powerRole | [PowerRoleType](#powerroletype9) | 是 | 充电的角色。 | +| dataRole | [DataRoleType](#dataroletype9) | 是 | 数据传输的角色。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | +| Promise\ | Promise对象,返回设置成功与否的结果。true表示设置成功,false表示设置失败。 | + +**示例:** + +```js +let ret = usb.getSupportedModes(0); +``` + +## USBEndpoint + +通过USB发送和接收数据的端口。通过[USBInterface](#usbinterface)获取。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ------------- | ------------------------------------------- | ------------- | +| address | number | 端点地址。 | +| attributes | number | 端点属性。 | +| interval | number | 端点间隔。 | +| maxPacketSize | number | 端点最大数据包大小。 | +| direction | [USBRequestDirection](#usbrequestdirection) | 端点的方向。 | +| number | number | 端点号。 | +| type | number | 端点类型。 | +| interfaceId | number | 端点所属的接口的唯一标识。 | + +## USBInterface + +一个[USBConfig](#usbconfig)中可以含有多个USBInterface,每个USBInterface提供一个功能。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ---------------- | ---------------------------------------- | --------------------- | +| id | number | 接口的唯一标识。 | +| protocol | number | 接口的协议。 | +| clazz | number | 设备类型。 | +| subClass | number | 设备子类。 | +| alternateSetting | number | 在同一个接口中的多个描述符中进行切换设置。 | +| name | string | 接口名称。 | +| endpoints | Array<[USBEndpoint](#usbendpoint)> | 当前接口所包含的端点。 | + +## USBConfig + +USB配置,一个[USBDevice](#usbdevice)中可以含有多个配置。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| -------------- | ------------------------------------------------ | --------------- | +| id | number | 配置的唯一标识。 | +| attributes | number | 配置的属性。 | +| maxPower | number | 最大功耗,以毫安为单位。 | +| name | string | 配置的名称,可以为空。 | +| isRemoteWakeup | boolean | 检查当前配置是否支持远程唤醒。 | +| isSelfPowered | boolean | 检查当前配置是否支持独立电源。 | +| interfaces | Array <[USBInterface](#usbinterface)> | 配置支持的接口属性。 | + +## USBDevice + +USB设备信息。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ---------------- | ------------------------------------ | ---------- | +| busNum | number | 总线地址。 | +| devAddress | number | 设备地址。 | +| serial | string | 序列号。 | +| name | string | 设备名字。 | +| manufacturerName | string | 产商信息。 | +| productName | string | 产品信息。 | +| version | string | 版本。 | +| vendorId | number | 厂商ID。 | +| productId | number | 产品ID。 | +| clazz | number | 设备类。 | +| subClass | number | 设备子类。 | +| protocol | number | 设备协议码。 | +| configs | Array<[USBConfig](#usbconfig)> | 设备配置描述符信息。 | + +## USBDevicePipe + +USB设备消息传输通道,用于确定设备。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ---------- | ------ | ----- | +| busNum | number | 总线地址。 | +| devAddress | number | 设备地址。 | + +## USBControlParams + +控制传输参数。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ------- | ----------------------------------------------- | ---------------- | +| request | number | 请求类型。 | +| target | [USBRequestTargetType](#usbrequesttargettype) | 请求目标类型。 | +| reqType | [USBControlRequestType](#usbcontrolrequesttype) | 请求控制类型。 | +| value | number | 请求参数。 | +| index | number | 请求参数value对应的索引值。 | +| data | Uint8Array | 用于写入或读取的缓冲区。 | + +## USBPort9+ + +USB设备端口。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| -------------- | -------------------------------- | ----------------------------------- | +| id | number | USB端口唯一标识。 | +| supportedModes | [PortModeType](#portmodetype9) | USB端口所支持的模式的数字组合掩码。 | +| status | [USBPortStatus](#usbportstatus9) | USB端口角色。 | + +## USBPortStatus9+ + +USB设备端口角色信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 参数类型 | 说明 | +| ---------------- | -------- | ---------------------- | +| currentMode | number | 当前的USB模式。 | +| currentPowerRole | number | 当前设备充电模式。 | +| currentDataRole | number | 当前设备数据传输模式。 | + +## USBRequestTargetType + +请求目标类型。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| ---------------------------- | ---- | ------ | +| USB_REQUEST_TARGET_DEVICE | 0 | 设备。 | +| USB_REQUEST_TARGET_INTERFACE | 1 | 接口。 | +| USB_REQUEST_TARGET_ENDPOINT | 2 | 端点。 | +| USB_REQUEST_TARGET_OTHER | 3 | 其他。 | + +## USBControlRequestType + +控制请求类型。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| ------------------------- | ---- | ------ | +| USB_REQUEST_TYPE_STANDARD | 0 | 标准。 | +| USB_REQUEST_TYPE_CLASS | 1 | 类。 | +| USB_REQUEST_TYPE_VENDOR | 2 | 厂商。 | + +## USBRequestDirection + +请求方向。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| --------------------------- | ---- | ------------------------ | +| USB_REQUEST_DIR_TO_DEVICE | 0 | 写数据,主设备往从设备。 | +| USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 | + +## FunctionType9+ + +USB设备侧功能。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| ------------ | ---- | ---------- | +| NONE | 0 | 没有功能。 | +| ACM | 1 | acm功能。 | +| ECM | 2 | ecm功能。 | +| HDC | 4 | hdc功能。 | +| MTP | 8 | 暂不支持。 | +| PTP | 16 | 暂不支持。 | +| RNDIS | 32 | 暂不支持。 | +| MIDI | 64 | 暂不支持。 | +| AUDIO_SOURCE | 128 | 暂不支持。 | +| NCM | 256 | 暂不支持。 | + +## PortModeType9+ + +USB端口模式类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| --------- | ---- | ---------------------------------------------------- | +| NONE | 0 | 无。 | +| UFP | 1 | 数据上行,需要外部供电。 | +| DFP | 2 | 数据下行,对外提供电源。 | +| DRP | 3 | 既可以做DFP(Host),也可以做UFP(Device),当前不支持。 | +| NUM_MODES | 4 | 当前不支持。 | + +## PowerRoleType9+ + +电源角色类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| ------ | ---- | ---------- | +| NONE | 0 | 无。 | +| SOURCE | 1 | 外部供电。 | +| SINK | 2 | 内部供电。 | + +## DataRoleType9+ + +数据角色类型。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +| 名称 | 值 | 说明 | +| ------ | ---- | ------------ | +| NONE | 0 | 无。 | +| HOST | 1 | 主设备角色。 | +| DEVICE | 2 | 从设备角色。 | + diff --git a/zh-cn/application-dev/reference/apis/js-apis-usb.md b/zh-cn/application-dev/reference/apis/js-apis-usb.md index 5e0aee35a77720f3510a1438876cc0f46ac9d200..ffa8e471f0e279279714c637cc16ecdd0f4a96f7 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-usb.md +++ b/zh-cn/application-dev/reference/apis/js-apis-usb.md @@ -1,22 +1,22 @@ # USB管理 -本模块主要提供管理USB设备的相关功能,包括查询USB设备列表、批量数据传输、控制命令传输、权限控制等。 +本模块主要提供管理USB设备的相关功能,包括主设备上查询USB设备列表、批量数据传输、控制命令传输、权限控制等;从设备上端口管理、功能切换及查询等。 > **说明:** > -> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 +> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```js -import usb from "@ohos.usb"; +import usb from "@ohos.usbV9"; ``` ## usb.getDevices getDevices(): Array<Readonly<USBDevice>> -获取USB设备列表。 +获取接入主设备的USB设备列表。如果没有设备接入,那么将会返回一个空的列表。 **系统能力:** SystemCapability.USB.USBManager @@ -89,7 +89,7 @@ connectDevice(device: USBDevice): Readonly<USBDevicePipe> 打开USB设备。 -需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device,再调用[usb.requestRight](#usbrequestright)获取设备请求权限。 +需要调用[usb.getDevices](#usbgetdevices)获取设备信息以及device,再调用[usb.requestRight](#usbrequestright)请求使用该设备的权限。 **系统能力:** SystemCapability.USB.USBManager @@ -105,10 +105,26 @@ connectDevice(device: USBDevice): Readonly<USBDevicePipe> | -------- | -------- | | Readonly<[USBDevicePipe](#usbdevicepipe)> | 指定的传输通道对象。 | +**错误码:** + +以下错误码的详细介绍参见[USB错误码](../errorcodes/errcode-usb.md)。 + +| 错误码ID | 错误信息 | +| -------- | -------- | +| 14400001 |Permission denied. Need call requestRight to get permission. | + **示例:** ```js -let devicepipe= usb.connectDevice(device); +let devicesList = usb.getDevices(); +if (devicesList.length == 0) { + console.log(`device list is empty`); + return; +} + +let device = devicesList[0]; +usb.requestRight(device.name); +let devicepipe = usb.connectDevice(device); console.log(`devicepipe = ${JSON.stringify(devicepipe)}`); ``` @@ -169,6 +185,70 @@ usb.requestRight(devicesName).then((ret) => { }); ``` +## usb.removeRight + +removeRight(deviceName: string): boolean; + +移除软件包访问设备的权限。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceName | string | 是 | 设备名称。 | + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| boolean | 返回权限移除结果。返回true表示权限移除成功;返回false则表示权限移除失败。 | + +**示例:** + +```js +let devicesName="1-1"; +if (usb.removeRight(devicesName) { + console.log(`Succeed in removing right`); +} +``` + +## usb.addRight + +addRight(bundleName: string, deviceName: string): boolean; + +添加软件包访问设备的权限。 + +[requestRight](#usbrequestright)的会触发弹框请求用户授权;addRight不会触发弹框,而是直接添加软件包访问设备的权限。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.USB.USBManager + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------- | -------- | -------- | +| deviceName | string | 是 | 设备名称。 | +| bundleName | string | 是 | 软件包名称。| + +**返回值:** + +| 类型 | 说明 | +| -------- | -------- | +| boolean | 返回权限添加结果。返回true表示权限添加成功;返回false则表示权限添加失败。 | + +**示例:** + +```js +let devicesName = "1-1"; +let bundleName = "com.example.hello"; +if (usb.addRight(bundleName, devicesName) { + console.log(`Succeed in adding right`); +} +``` + ## usb.claimInterface claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number @@ -443,7 +523,7 @@ let ret = usb.closePipe(devicepipe); console.log(`closePipe = ${ret}`); ``` -## usb.usbFunctionsFromString9+ +## usb.usbFunctionsFromString usbFunctionsFromString(funcs: string): number @@ -472,7 +552,7 @@ let funcs = "acm"; let ret = usb.usbFunctionsFromString(funcs); ``` -## usb.usbFunctionsToString9+ +## usb.usbFunctionsToString usbFunctionsToString(funcs: FunctionType): string @@ -486,7 +566,7 @@ usbFunctionsToString(funcs: FunctionType): string | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------------------ | ---- | ----------------- | -| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | +| funcs | [FunctionType](#functiontype) | 是 | USB功能数字掩码。 | **返回值:** @@ -501,7 +581,7 @@ let funcs = ACM | ECM; let ret = usb.usbFunctionsToString(funcs); ``` -## usb.setCurrentFunctions9+ +## usb.setCurrentFunctions setCurrentFunctions(funcs: FunctionType): Promise\ @@ -515,7 +595,7 @@ setCurrentFunctions(funcs: FunctionType): Promise\ | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------------------ | ---- | ----------------- | -| funcs | [FunctionType](#functiontype9) | 是 | USB功能数字掩码。 | +| funcs | [FunctionType](#functiontype) | 是 | USB功能数字掩码。 | **返回值:** @@ -530,7 +610,7 @@ let funcs = HDC; let ret = usb.setCurrentFunctions(funcs); ``` -## usb.getCurrentFunctions9+ +## usb.getCurrentFunctions getCurrentFunctions(): FunctionType @@ -544,7 +624,7 @@ getCurrentFunctions(): FunctionType | 类型 | 说明 | | ------------------------------ | --------------------------------- | -| [FunctionType](#functiontype9) | 当前的USB功能列表的数字组合掩码。 | +| [FunctionType](#functiontype) | 当前的USB功能列表的数字组合掩码。 | **示例:** @@ -552,7 +632,7 @@ getCurrentFunctions(): FunctionType let ret = usb.getCurrentFunctions(); ``` -## usb.getPorts9+ +## usb.getPorts getPorts(): Array\ @@ -566,7 +646,7 @@ getPorts(): Array\ | 类型 | 说明 | | ----------------------------- | --------------------- | -| [Array\](#usbport9) | USB端口描述信息列表。 | +| [Array\](#usbport) | USB端口描述信息列表。 | **示例:** @@ -574,7 +654,7 @@ getPorts(): Array\ let ret = usb.getPorts(); ``` -## usb.getSupportedModes9+ +## usb.getSupportedModes getSupportedModes(portId: number): PortModeType @@ -594,7 +674,7 @@ getSupportedModes(portId: number): PortModeType | 类型 | 说明 | | ------------------------------ | -------------------------- | -| [PortModeType](#portmodetype9) | 支持的模式列表的组合掩码。 | +| [PortModeType](#portmodetype) | 支持的模式列表的组合掩码。 | **示例:** @@ -602,7 +682,7 @@ getSupportedModes(portId: number): PortModeType let ret = usb.getSupportedModes(0); ``` -## usb.setPortRoles9+ +## usb.setPortRoles setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise\ @@ -617,8 +697,8 @@ setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): | 参数名 | 类型 | 必填 | 说明 | | --------- | -------------------------------- | ---- | ---------------- | | portId | number | 是 | 端口号。 | -| powerRole | [PowerRoleType](#powerroletype9) | 是 | 充电的角色。 | -| dataRole | [DataRoleType](#dataroletype9) | 是 | 数据传输的角色。 | +| powerRole | [PowerRoleType](#powerroletype) | 是 | 充电的角色。 | +| dataRole | [DataRoleType](#dataroletype) | 是 | 数据传输的角色。 | **返回值:** @@ -729,7 +809,7 @@ USB设备消息传输通道,用于确定设备。 | index | number | 请求参数value对应的索引值。 | | data | Uint8Array | 用于写入或读取的缓冲区。 | -## USBPort9+ +## USBPort USB设备端口。 @@ -740,10 +820,10 @@ USB设备端口。 | 名称 | 参数类型 | 说明 | | -------------- | -------------------------------- | ----------------------------------- | | id | number | USB端口唯一标识。 | -| supportedModes | [PortModeType](#portmodetype9) | USB端口所支持的模式的数字组合掩码。 | -| status | [USBPortStatus](#usbportstatus9) | USB端口角色。 | +| supportedModes | [PortModeType](#portmodetype) | USB端口所支持的模式的数字组合掩码。 | +| status | [USBPortStatus](#usbportstatus) | USB端口角色。 | -## USBPortStatus9+ +## USBPortStatus USB设备端口角色信息。 @@ -793,7 +873,7 @@ USB设备端口角色信息。 | USB_REQUEST_DIR_TO_DEVICE | 0 | 写数据,主设备往从设备。 | | USB_REQUEST_DIR_FROM_DEVICE | 0x80 | 读数据,从设备往主设备。 | -## FunctionType9+ +## FunctionType USB设备侧功能。 @@ -814,7 +894,7 @@ USB设备侧功能。 | AUDIO_SOURCE | 128 | 暂不支持。 | | NCM | 256 | 暂不支持。 | -## PortModeType9+ +## PortModeType USB端口模式类型。 @@ -830,7 +910,7 @@ USB端口模式类型。 | DRP | 3 | 既可以做DFP(Host),也可以做UFP(Device),当前不支持。 | | NUM_MODES | 4 | 当前不支持。 | -## PowerRoleType9+ +## PowerRoleType 电源角色类型。 @@ -844,7 +924,7 @@ USB端口模式类型。 | SOURCE | 1 | 外部供电。 | | SINK | 2 | 内部供电。 | -## DataRoleType9+ +## DataRoleType 数据角色类型。 diff --git a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md index ab042734224a6df8031ae03a36a68578ef1bc302..f75b98a10733627de2d38e4ab22950deeff3d749 100644 --- a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md +++ b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md @@ -98,6 +98,7 @@ - [ColumnSplit](ts-container-columnsplit.md) - [Counter](ts-container-counter.md) - [Flex](ts-container-flex.md) + - [FlowItem](ts-container-flowitem.md) - [GridContainer](ts-container-gridcontainer.md) - [GridCol](ts-container-gridcol.md) - [GridRow](ts-container-gridrow.md) @@ -118,6 +119,7 @@ - [Swiper](ts-container-swiper.md) - [Tabs](ts-container-tabs.md) - [TabContent](ts-container-tabcontent.md) + - [WaterFlow](ts-container-waterflow.md) - 媒体组件 - [Video](ts-media-components-video.md) - 绘制组件 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/waterflow.gif b/zh-cn/application-dev/reference/arkui-ts/figures/waterflow.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c4010c17b302a8617508bbeb037a0dddf220882 Binary files /dev/null and b/zh-cn/application-dev/reference/arkui-ts/figures/waterflow.gif differ diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-alphabet-indexer.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-alphabet-indexer.md index 39484c97aeb6e66ec401a9a7efcaf56a1a886220..9d90b27886e63a7126717f3672fa77effbfe7e01 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-container-alphabet-indexer.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-alphabet-indexer.md @@ -20,8 +20,8 @@ AlphabetIndexer(value: {arrayValue: Array<string>, selected: number}) | 参数名 | 参数类型 | 必填 | 参数描述 | | -------- | -------- | -------- | -------- | -| arrayValue | Array<string> | 是 | 字母索引字符串数组。 | -| selected | number | 是 | 初始选中项索引值。 | +| arrayValue | Array<string> | 是 | 字母索引字符串数组,不可设置为空。 | +| selected | number | 是 | 初始选中项索引值,若超出索引值范围,则取默认值0。 | ## 属性 @@ -29,19 +29,19 @@ AlphabetIndexer(value: {arrayValue: Array<string>, selected: number}) | 名称 | 参数类型 | 描述 | | ----------------------- | --------------- | ----------------------------------------------------------- | -| color | [ResourceColor](ts-types.md#resourcecolor) | 设置文字颜色。 | -| selectedColor | [ResourceColor](ts-types.md#resourcecolor) | 设置选中项文字颜色。 | -| popupColor | [ResourceColor](ts-types.md#resourcecolor) | 设置提示弹窗文字颜色。 | -| selectedBackgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 设置选中项背景颜色。 | -| popupBackground | [ResourceColor](ts-types.md#resourcecolor) | 设置提示弹窗背景色。 | -| usingPopup | boolean | 设置是否使用提示弹窗。 | -| selectedFont | [Font](ts-types.md#font) | 设置选中项文字样式。 | -| popupFont | [Font](ts-types.md#font) | 设置提示弹窗字体样式。 | -| font | [Font](ts-types.md#font) | 设置字母索引条默认字体样式。 | -| itemSize | string \| number | 设置字母索引条字母区域大小,字母区域为正方形,即正方形边长。 | -| alignStyle | IndexerAlign | 设置字母索引条弹框的对齐样式,支持弹窗显示在索引条右侧和左侧。
默认值:IndexerAlign.Right | -| selected | number | 设置选中项索引值。 | -| popupPosition | [Position](ts-types.md#position8) | 设置弹出窗口相对于索引器条上边框中点的位置。 | +| color | [ResourceColor](ts-types.md#resourcecolor) | 设置文字颜色。
默认值:0x99000000。 | +| selectedColor | [ResourceColor](ts-types.md#resourcecolor) | 设置选中项文字颜色。
默认值:0xFF254FF7。 | +| popupColor | [ResourceColor](ts-types.md#resourcecolor) | 设置提示弹窗文字颜色。
默认值:0xFF254FF7。 | +| selectedBackgroundColor | [ResourceColor](ts-types.md#resourcecolor) | 设置选中项背景颜色。
默认值:0x1F0A59F7。 | +| popupBackground | [ResourceColor](ts-types.md#resourcecolor) | 设置提示弹窗背景色。
默认值:0xFFF1F3F5。 | +| usingPopup | boolean | 设置是否使用提示弹窗。
默认值:false。 | +| selectedFont | [Font](ts-types.md#font) | 设置选中项文字样式。
默认值:
{
fontSize:10,
fontStyle:FontStyle.Normal,
fontWeight:FontWeight.Normal,
fontFamily:HarmonyOS Sans
} | +| popupFont | [Font](ts-types.md#font) | 设置提示弹窗字体样式。
默认值:
{
fontSize:10,
fontStyle:FontStyle.Normal,
fontWeight:FontWeight.Normal,
fontFamily:HarmonyOS Sans
} | +| font | [Font](ts-types.md#font) | 设置字母索引条默认字体样式。
默认值:
{
fontSize:10,
fontStyle:FontStyle.Normal,
fontWeight:FontWeight.Normal,
fontFamily:HarmonyOS Sans
} | +| itemSize | string \| number | 设置字母索引条字母区域大小,字母区域为正方形,即正方形边长。
默认值:24.0。 | +| alignStyle | IndexerAlign | 设置字母索引条弹框的对齐样式,支持弹窗显示在索引条右侧和左侧。
默认值:IndexerAlign.Right。 | +| selected | number | 设置选中项索引值。
默认值:0。 | +| popupPosition | [Position](ts-types.md#position8) | 设置弹出窗口相对于索引器条上边框中点的位置。
默认值:{x:96.0, y:48.0}。 | ## IndexerAlign枚举说明 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-flowitem.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-flowitem.md new file mode 100644 index 0000000000000000000000000000000000000000..2c2ed70cdd5e019db511e5235305e5fd2b91b67d --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-flowitem.md @@ -0,0 +1,31 @@ +# FlowItem + + +[瀑布流组件](ts-container-waterflow.md)的子组件,用来展示瀑布流具体item。 + + +> **说明:** +> +> 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + + +## 子组件 + + +支持单个子组件。 + + +## 接口 + +FlowItem() + +使用该接口来创建瀑布流子组件。 + + +## 属性 + +无 + +## 示例 + +详见[瀑布流组件示例](ts-container-waterflow.md#示例)。 \ No newline at end of file diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-container-waterflow.md b/zh-cn/application-dev/reference/arkui-ts/ts-container-waterflow.md new file mode 100644 index 0000000000000000000000000000000000000000..4ca95460bcf93cc1c07c5ea44f8de0f412d43f86 --- /dev/null +++ b/zh-cn/application-dev/reference/arkui-ts/ts-container-waterflow.md @@ -0,0 +1,264 @@ +# WaterFlow + + +瀑布流容器,由“行”和“列”分割的单元格所组成,通过容器自身的排列规则,将不同大小的“项目”自上而下,如瀑布般紧密布局。 + + +> **说明:** +> +> 该组件从API Version 9 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + + +## 子组件 + + +包含[FlowItem](ts-container-flowitem.md)子组件。 + + +## 接口 + + +WaterFlow(options?: {footer?: CustomBuilder, scroller?: Scroller}) + +**参数:** + + | 参数名 | 参数类型 | 必填 | 参数描述 | + | ---------- | ----------------------------------------------- | ------ | -------------------------------------------- | + | footer | [CustomBuilder](ts-types.md#custombuilder8) | 否 | 设置WaterFlow尾部组件。 | + | scroller | [Scroller](ts-container-scroll.md#scroller) | 否 | 可滚动组件的控制器,与可滚动组件绑定。 | + + +## 属性 + + +除支持[通用属性](ts-universal-attributes-size.md)外,还支持以下属性: + +| 名称 | 参数类型 | 描述 | +| -------- | -------- | -------- | +| columnsTemplate | string | 设置当前瀑布流组件布局列的数量,不设置时默认1列。
例如, '1fr 1fr 2fr' 是将父组件分3列,将父组件允许的宽分为4等份,第一列占1份,第二列占1份,第三列占2份。并支持[auto-fill](#auto-fill说明)。
默认值:'1fr' | +| rowsTemplate | string | 设置当前瀑布流组件布局行的数量,不设置时默认1行。
例如, '1fr 1fr 2fr'是将父组件分三行,将父组件允许的高分为4等份,第一行占1份,第二行占一份,第三行占2份。并支持[auto-fill](#auto-fill说明)。
默认值:'1fr' | +| itemConstraintSize | [ConstraintSizeOptions](ts-types.md#constraintsizeoptions) | 设置约束尺寸,子组件布局时,进行尺寸范围限制。 | +| columnsGap | Length |设置列与列的间距。
默认值:0| +| rowsGap | Length |设置行与行的间距。
默认值:0| +| layoutDirection | [FlexDirection](ts-appendix-enums.md#flexdirection) |设置布局的主轴方向。| + + +## 事件 + + +除支持[通用事件](ts-universal-events-click.md)外,还支持以下事件: + + +| 名称 | 功能描述 | +| -------- | -------- | +| onReachStart(event: () => void) | 瀑布流组件到达起始位置时触发。 | +| onReachEnd(event: () => void) | 瀑布流组件到底末尾位置时触发。 | + + +## auto-fill说明 + +WaterFlow的columnsTemplate、rowsTemplate属性的auto-fill仅支持以下格式: + +```css +repeat(auto-fill, track-size) +``` + +其中repeat、auto-fill为关键字。track-size为行高或者列宽,支持的单位包括px、vp、%或有效数字,track-size至少包括一个有效行高或者列宽。 + + +## 示例 + + +```ts +// WaterFlowDataSource.ets + +// 实现IDataSource接口的对象,用于瀑布流组件加载数据 +export class WaterFlowDataSource implements IDataSource { + + private dataArray: number[] = [] + private listeners: DataChangeListener[] = [] + + constructor() { + for (let i = 0; i <= 100; i++) { + this.dataArray.push(i); + } + } + + // 获取索引对应的数据 + public getData(index: number): any { + return this.dataArray[index] + } + + // 通知控制器数据重新加载 + notifyDataReload(): void { + this.listeners.forEach(listener => { + listener.onDataReloaded() + }) + } + + // 通知控制器数据增加 + notifyDataAdd(index: number): void { + this.listeners.forEach(listener => { + listener.onDataAdded(index) + }) + } + + // 通知控制器数据变化 + notifyDataChange(index: number): void { + this.listeners.forEach(listener => { + listener.onDataChanged(index) + }) + } + + // 通知控制器数据删除 + notifyDataDelete(index: number): void { + this.listeners.forEach(listener => { + listener.onDataDeleted(index) + }) + } + + // 通知控制器数据位置变化 + notifyDataMove(from: number, to: number): void { + this.listeners.forEach(listener => { + listener.onDataMoved(from, to) + }) + } + + // 获取数据总数 + public totalCount(): number { + return this.dataArray.length + } + + // 注册改变数据的控制器 + registerDataChangeListener(listener: DataChangeListener): void { + if (this.listeners.indexOf(listener) < 0) { + this.listeners.push(listener) + } + } + + // 注销改变数据的控制器 + unregisterDataChangeListener(listener: DataChangeListener): void { + const pos = this.listeners.indexOf(listener); + if (pos >= 0) { + this.listeners.splice(pos, 1) + } + } + + // 增加数据 + public Add1stItem(): void { + this.dataArray.splice(0, 0, this.dataArray.length) + this.notifyDataAdd(0) + } + + // 在数据尾部增加一个元素 + public AddLastItem(): void { + this.dataArray.splice(this.dataArray.length, 0, this.dataArray.length) + this.notifyDataAdd(this.dataArray.length-1) + } + + // 在指定索引位置增加一个元素 + public AddItem(index: number): void { + this.dataArray.splice(index, 0, this.dataArray.length) + this.notifyDataAdd(index) + } + + // 删除第一个元素 + public Delete1stItem(): void { + this.dataArray.splice(0, 1) + this.notifyDataDelete(0) + } + + // 删除第二个元素 + public Delete2ndItem(): void { + this.dataArray.splice(1, 1) + this.notifyDataDelete(1) + } + + // 删除最后一个元素 + public DeleteLastItem(): void { + this.dataArray.splice(-1, 1) + this.notifyDataDelete(this.dataArray.length) + } + + // 重新加载数据 + public Reload(): void { + this.dataArray.splice(1, 1); + this.dataArray.splice(3, 2); + this.notifyDataReload(); + } +} +``` + +```ts +// WaterflowDemo.ets +import { WaterFlowDataSource } from './WaterFlowDataSource' + +@Entry +@Component +struct WaterflowDemo { + @State minSize: number = 50 + @State maxSize: number = 100 + @State fontSize: number = 24 + @State colors: number[] = [0xFFC0CB, 0xDA70D6, 0x6B8E23, 0x6A5ACD, 0x00FFFF, 0x00FF7F] + scroller: Scroller = new Scroller(); + datasource: WaterFlowDataSource = new WaterFlowDataSource(); + + // 计算flow item宽/高 + getSize() { + let ret = Math.floor(Math.random() * this.maxSize) + return (ret > this.minSize ? ret : this.minSize) + } + + @Builder itemFoot() { + Column() { + Text(`Footer`) + .fontSize(10) + .backgroundColor(Color.Red) + .width(50) + .height(50) + .align(Alignment.Center) + .margin({ top: 2 }) + } + } + + build() { + Column({ space: 2 }) { + WaterFlow({ footer: this.itemFoot, scroller: this.scroller }) { + LazyForEach(this.datasource, (item: number) => { + FlowItem() { + Column() { + Text("N" + item).fontSize(12).height('16') + Image('res/waterFlowTest(' + item % 5 + ').jpg') + .objectFit(ImageFit.Fill) + } + } + .width(this.getSize()) + .height(this.getSize()) + .backgroundColor(this.colors[item % 5]) + }, item => item) + } + .columnsTemplate("1fr 1fr 1fr 1fr") + .itemConstraintSize({ + minWidth: 0, + maxWidth: '100%', + minHeight: 0, + maxHeight: '100%' + }) + .columnsGap(10) + .rowsGap(5) + .onReachStart(() => { + console.info("onReachStart") + }) + .onReachEnd(() => { + console.info("onReachEnd") + }) + .backgroundColor(0xFAEEE0) + .width('100%') + .height('80%') + .layoutDirection(FlexDirection.Column) + } + } +} +``` + +![zh-cn_image_WaterFlow.gif](figures/waterflow.gif) \ No newline at end of file diff --git a/zh-cn/application-dev/reference/errorcodes/errcode-usb.md b/zh-cn/application-dev/reference/errorcodes/errcode-usb.md new file mode 100644 index 0000000000000000000000000000000000000000..4a7910cc0b9a9074c002185ab880e9a3030a91ac --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errcode-usb.md @@ -0,0 +1,19 @@ +# USB服务错误码 + +## 14400001 连接USB设备被拒绝 + +**错误信息** + +Permission denied. Need call requestRight to get permission. + +**错误描述** + +当调用USB模块部分接口时,如果没有相关权限,会报此错误码。 + +**可能原因** + +没有获取到设备的使用权限。 + +**处理步骤** + +调用requestRight方法申请设备的使用权限。 \ No newline at end of file diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-device-manager.md b/zh-cn/application-dev/reference/errorcodes/errorcode-device-manager.md new file mode 100644 index 0000000000000000000000000000000000000000..1884284f55f3636e0b366820dffa7d48a225da72 --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-device-manager.md @@ -0,0 +1,71 @@ +# 设备管理错误码 + +## 11600101 服务调用异常 + +**错误信息** + +Failed to execute the function. + +**可能原因** + +服务内部调用异常。 + +**处理步骤** + +重新调用接口再次触发调用。 + +## 11600102 获取服务失败 + +**错误信息** + +Failed to obtain the service. + +**可能原因** + +服务未启动或者服务启动失败。 + +**处理步骤** + +检查服务是否正常启动,重新获取服务。 + +## 11600103 认证业务不可用 + +**错误信息** + +Authentication invalid. + +**可能原因** + +上一次认证业务未结束。 + +**处理步骤** + +等待上一次认证业务结束,重新发起认证调用。 + +## 11600104 发现业务不可用 + +**错误信息** + +Discovery invalid. + +**可能原因** + +上一次发现业务未结束。 + +**处理步骤** + +等待上一次发现业务结束,重新发起发现调用。 + +## 11600105 发布业务不可用 + +**错误信息** + +Publish invalid. + +**可能原因** + +上一次发布业务未结束。 + +**处理步骤** + +等待上一次发布业务结束,重新发起发布调用。 diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-hisysevent.md b/zh-cn/application-dev/reference/errorcodes/errorcode-hisysevent.md new file mode 100644 index 0000000000000000000000000000000000000000..0d573cf63851c5a46fffafb7c43b9b132947d7a6 --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-hisysevent.md @@ -0,0 +1,284 @@ +# 系统事件错误码 + +## 1120001 非法的事件领域 + +**错误信息** + +Invalid event domain. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入了非法的事件领域名称,系统将忽略此次系统事件打点。 + +**可能原因** + +1.系统事件领域名称长度超过16个字符; +2.系统事件领域名称包含特殊字符; +3.系统事件领域名称为空。 + +**处理步骤** + +检查系统事件领域名称是否合法。 + +## 1120002 非法的事件名称 + +**错误信息** + +Invalid event name. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入了非法的事件名称,系统将忽略此次系统事件打点。 + +**可能原因** + +1.系统事件名称长度超过32个字符; +2.系统事件名称包含特殊字符; +3.系统事件名称为空。 + +**处理步骤** + +检查系统事件名称是否合法。 + +## 11200003 环境异常 + +**错误信息** + +Abnormal environment. + +**错误描述** + +在调用write接口进行系统事件打点时,由于环境异常,系统将忽略此次系统事件打点。 + +**可能原因** + +1.hiview服务未成功启动; +2.hiview服务socket异常。 + +**处理步骤** + +尝试重新调用write接口进行打点。 + +## 11200004 事件长度超过限制 + +**错误信息** + +Length of the event is over limit. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入的事件总长度超过限制,系统将忽略此次系统事件打点。 + +**可能原因** + +系统事件总长度超过384K。 + +**处理步骤** + +检查系统事件总长度是否大于384K。 + +## 11200051 非法的事件参数 + +**错误信息** + +Invalid event parameter. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入了非法的参数名称,系统将忽略此次系统事件打点。 + +**可能原因** + +1.系统事件参数名称长度超过32个字符; +2.系统事件参数名称包含特殊字符; +3.系统事件参数名为空。 + +**处理步骤** + +检查系统事件参数名称是否合法。 + +## 11200052 字符串类型的事件参数值的长度超过限制 + +**错误信息** + +Size of the event parameter of the string type is over limit. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入了长度超限的字符串类型参数,系统将忽略此次系统事件打点。 + +**可能原因** + +字符串类型的参数值的长度超过256K。 + +**处理步骤** + +检查系统事件中字符串类型的参数值的长度是否超过256K。 + +## 11200053 事件参数的数量超过限制 + +**错误信息** + +Count of event parameters is over limit. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入的事件参数数量超过限制,系统将将忽略此次系统事件打点。 + +**可能原因** + +系统事件的参数数量超过128个。 + +**处理步骤** + +检查系统事件的参数数量是否超过了128个。 + + +## 11200054 数组类型的事件参数值的长度超过限制 + +**错误信息** + +Count of event parameter of the array type is over limit. + +**错误描述** + +在调用write接口进行系统事件打点时,由于传入了长度超过限制的数组类型的参数,系统将忽略此次系统事件打点。 + +**可能原因** + +系统事件中有数组类型的参数值的长度超过100。 + +**处理步骤** + +检查数组类型的参数值的长度是否超过100. + +## 11200101 事件监听者的数量超过限制 + +**错误信息** + +Count of watchers is over limit. + +**错误描述** + +在调用addWatcher接口添加系统事件监听者时,由于添加的监听者数量超过限制,系统将拒绝此系统事件监听者的添加。 + +**可能原因** + +hiview服务已添加30个系统事件监听者,无法添加新的系统事件监听者。 + +**处理步骤** + +检查已成功添加的系统事件监听者数量是否超过了30个。 + +## 11200102 事件监听者包含的监听规则数量超过限制 + +**错误信息** + +Count of watch rules is over limit. + +**错误描述** + +在调用addWatcher接口添加系统事件监听者时,由于该系统事件监听者包含的监听规则数量超过限制,系统将拒绝此系统事件监听者的添加。 + +**可能原因** + +系统事件监听者包含的监听规则的数量超过20个。 + +**处理步骤** + +检查系统事件监听者包含的监听规则数量是否超过20个。 + +## 11200201 事件监听者不存在 + +**错误信息** + +The watcher does not exist. + +**错误描述** + +在调用removeWatcher移除系统事件监听者时,由于该系统事件监听者不在监听队列,系统将拒绝此系统事件监听者的移除。 + +**可能原因** + +1.尝试移除的系统事件监听者为空; +2.尝试移除的系统事件监听者没有被成功添加过。 + +**处理步骤** + +检查移除的系统事件监听者是否为空,或者是否成功添加过此系统事件监听者。 + +## 11200301 查询规则的数量超过限制 + +**错误信息** + +Count of query rules is over limit. + +**错误描述** + +在调用query接口查询系统事件时,由于传入的查询规则数量超限,系统将忽略此次系统事件的查询。 + +**可能原因** + +查询规则个数超过10个。 + +**处理步骤** + +检查查询规则数量是否超过10个。 + + +## 11200302 非法的查询规则 + +**错误信息** + +Invalid query rule. + + +**错误描述** + +在调用query接口查询系统事件时,由于传入了非法的查询规则,系统将忽略此次系统事件的查询。 + +**可能原因** + +1.查询规则中的事件领域名称长度超过16个字符或者事件名称长度超过32个字符; +2.查询规则中的事件领域名称或者事件名称包含特殊字符; +3.查询规则中的事件领域名称或者事件名称为空。 + +**处理步骤** + +检查查询规则中配置的事件领域名称及事件名称是否合法。 + +## 11200303 并发查询的数量超过限制 + +**错误信息** + +Count of concurrent queriers is over limit. + +**错误描述** + +在调用query接口查询系统事件时,由于在同一时间点并发查询的数量超过限制,系统将忽略此次系统事件的查询。 + +**可能原因** + +并发查询的数量超过4个。 + +**处理步骤** + +检查在同一时间点是否有4个以上的查询操作。 + +## 11200304 查询频率超过限制 + +**错误信息** + +Query frequency is over limit. + +**错误描述** + +在调用query接口查询系统事件时,由于查询频率超过限制,系统将忽略此次系统事件的查询。 + +**可能原因** + +查询频率超过1次/秒。 + +**处理步骤** + +检查是否在1秒内进行1次以上的查询。 diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-hiviewdfx-hidebug.md b/zh-cn/application-dev/reference/errorcodes/errorcode-hiviewdfx-hidebug.md new file mode 100644 index 0000000000000000000000000000000000000000..4c843b8bbde55cd2fe27b1d4a47c10126a023c0f --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-hiviewdfx-hidebug.md @@ -0,0 +1,20 @@ +# Hidebug错误码 + + +## 11400101 系统服务获取失败 + +**错误信息** + +ServiceId is invalid, systemAbility is not exist. + +**错误描述** +当前serviceId未查询到对应的系统服务。 + +**可能原因** + +当前serviceId未查询到对应的系统服务。 + +**处理步骤** + +传入正确的系统服务id。 + diff --git a/zh-cn/application-dev/reference/errorcodes/errorcodes-request.md b/zh-cn/application-dev/reference/errorcodes/errorcodes-request.md new file mode 100644 index 0000000000000000000000000000000000000000..2f7063b797dea8ff1f61361128ef7105252b8172 --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcodes-request.md @@ -0,0 +1,55 @@ +# 上传下载错误码 + +## 13400001 文件操作异常 + +**错误信息** + +File operation error. + +**错误描述** + +在调用uploadFile或downloadFile接口时,文件权限不足或操作失败。 + +**可能原因** + +该错误码表示文件操作异常,可能原因文件权限不足。 + +**处理步骤** + +请检查文件权限是否合理。 + +## 13400002 文件路径异常 + +**错误信息** + +Bad file path. + +**错误描述** + +在调用uploadFile或downloadFile接口时,文件路径不合法。 + +**可能原因** + +该错误码表示文件路径异常,可能原因文件路径错误。 + +**处理步骤** + +请检查上传下载的文件路径是否正确。 + +## 13400003 服务异常 + +**错误信息** + +Task manager service error. + +**错误描述** + +在调用downloadFile接口时,下载任务后台服务失败。 + +**可能原因** + +该错误码表示服务异常,,可能原因任务创建失败 + +**处理步骤** + +请检查任务配置是否正确。 diff --git a/zh-cn/application-dev/security/cryptoFramework-guidelines.md b/zh-cn/application-dev/security/cryptoFramework-guidelines.md index 368108ba13572fde86046d1e30febc4dae2551ed..734dcf92c03846e7755e29005c5fd9914d5a3195 100644 --- a/zh-cn/application-dev/security/cryptoFramework-guidelines.md +++ b/zh-cn/application-dev/security/cryptoFramework-guidelines.md @@ -100,7 +100,7 @@ function testGenerateAesKey() { 示例3:根据指定的RSA非对称密钥二进制数据,生成KeyPair对象(场景2) -1. 获取RSA二进制密钥数据封装成DataBlob对象,按keysize(32位) 、nsize(keysize/8)、 esize(e实际长度)、dsize(keysize/8)、nval(大数n的二进制数据)、eval(大数e的二进制数据)和dval(大数d的二进制数据)拼接形成。 +1. 获取RSA二进制密钥数据封装成DataBlob对象,按keysize(32位的密钥位数) 、nsize(32位,值为keysize/8)、 esize(32位的大数e的实际长度,单位Byte)、dsize(32位,值位keysize/8)、nval(大数n的二进制数据)、eval(大数e的二进制数据)和dval(大数d的二进制数据)拼接形成。 2. 调用convertKey方法,传入公钥二进制和私钥二进制(二者非必选项,可只传入其中一个),转换为KeyPair对象。 ```javascript @@ -649,7 +649,7 @@ function signMessageCallback() { } function verifyMessageCallback() { - let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA25"); + let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256"); verifyer.init(globalKeyPair.pubKey, function (err, data) { verifyer.update(input1, function(err, data) { verifyer.verify(input2, SignMessageBlob, function(err, data) { @@ -875,15 +875,6 @@ function doMdByCallback(algName) { ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" -function stringToUint8Array(str) { - var arr = []; - for (var i = 0, j = str.length; i < j; ++i) { - arr.push(str.charCodeAt(i)); - } - var tmpArray = new Uint8Array(arr); - return tmpArray; -} - let globalKeyPair; function ecdhPromise() { diff --git a/zh-cn/application-dev/task-management/Readme-CN.md b/zh-cn/application-dev/task-management/Readme-CN.md index 994e21697c55f18fd58df906939975cca4f694d8..2674843279061115a0ab11b494dd9b6556e27bff 100644 --- a/zh-cn/application-dev/task-management/Readme-CN.md +++ b/zh-cn/application-dev/task-management/Readme-CN.md @@ -2,12 +2,11 @@ - 后台任务 - [后台任务概述](background-task-overview.md) - - [后台任务开发指导](background-task-dev-guide.md) - -- 延迟任务调度 - - [延迟任务调度概述](work-scheduler-overview.md) - - [延迟任务调度开发指导](work-scheduler-dev-guide.md) + - [短时任务开发指导](transient-task-dev-guide.md) + - [长时任务开发指导](continuous-task-dev-guide.md) + - [延迟任务开发指导](work-scheduler-dev-guide.md) + - [申请能效资源开发指导](efficiency-resources-apply-dev-guide.md) - 后台代理提醒 - [后台代理提醒开发概述](background-agent-scheduled-reminder-overview.md) - - [后台代理提醒开发指导](background-agent-scheduled-reminder-guide.md) \ No newline at end of file + - [后台代理提醒开发指导](background-agent-scheduled-reminder-guide.md) diff --git a/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md b/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md index f442fa9914b821e1009fc3452a41e531d2c518a0..2579fe544e302f1afb920bfc97a90f4f21705973 100644 --- a/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md +++ b/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-guide.md @@ -24,147 +24,155 @@ reminderAgent:封装了发布、取消提醒类通知的方法。 ## 开发步骤 -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> **说明:** > > 1. 应用需要配置权限:ohos.permission.PUBLISH_AGENT_REMINDER。 > > 2. 应用需要申请通知弹窗:[Notification.requestEnableNotification](../reference/apis/js-apis-notification.md#notificationrequestenablenotification8)。 - -1. 定义一个提醒代理。 - - 倒计时实例定义: - ```js - import reminderAgent from '@ohos.reminderAgent'; - import notification from '@ohos.notification'; - export default { - // eTS工程: - let timer : reminderAgent.ReminderRequestTimer = { - reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, - triggerTimeInSeconds: 10, - actionButton: [ - { - title: "close", - type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE - } - ], - wantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" - }, - maxScreenWantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" - }, - title: "this is title", - content: "this is content", - expiredContent: "this reminder has expired", - notificationId: 100, - slotType: notification.SlotType.SOCIAL_COMMUNICATION - } - } - ``` - - 日历实例定义: - - ```js - // eTS工程: - let calendar : reminderAgent.ReminderRequestCalendar = { - reminderType: reminderAgent.ReminderType.REMINDER_TYPE_CALENDAR, - dateTime: { - year: 2050, - month: 7, - day: 30, - hour: 11, - minute: 14, - second: 30 - }, - repeatMonths: [1], - repeatDays: [1], - actionButton: [ - { - title: "close", - type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE - }, - { - title: "snooze", - type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE - }, - ], - wantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" - }, - maxScreenWantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" - }, - ringDuration: 5, - snoozeTimes: 2, - timeInterval: 5, - title: "this is title", - content: "this is content", - expiredContent: "this reminder has expired", - snoozeContent: "remind later", - notificationId: 100, - slotType: notification.SlotType.SOCIAL_COMMUNICATION - } - ``` - - 闹钟实例定义: - - ```js - // eTS工程: - let alarm : reminderAgent.ReminderRequestAlarm = { - reminderType: reminderAgent.ReminderType.REMINDER_TYPE_ALARM, +> 只有用户授权后,提醒代理的功能才能使用。 + +1、定义目标提醒代理。 + +2、发布相应的提醒代理。 + +```ts +import reminderAgent from '@ohos.reminderAgent'; +import notification from '@ohos.notification'; + +// 倒计时实例定义: +let timer : reminderAgent.ReminderRequestTimer = { + reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, + triggerTimeInSeconds: 10, + actionButton: [ + { + title: "close", + type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE + } + ], + wantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + maxScreenWantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + title: "this is title", + content: "this is content", + expiredContent: "this reminder has expired", + notificationId: 100, + slotType: notification.SlotType.SOCIAL_COMMUNICATION +} + +// 日历实例定义: +let calendar : reminderAgent.ReminderRequestCalendar = { + reminderType: reminderAgent.ReminderType.REMINDER_TYPE_CALENDAR, + dateTime: { + year: 2050, + month: 7, + day: 30, hour: 11, minute: 14, - daysOfWeek: [0], - actionButton: [ - { - title: "close", - type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE - }, - { - title: "snooze", - type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE - }, - ], - wantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" + second: 30 + }, + repeatMonths: [1], + repeatDays: [1], + actionButton: [ + { + title: "close", + type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE + }, + { + title: "snooze", + type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE + }, + ], + wantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + maxScreenWantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + ringDuration: 5, + snoozeTimes: 2, + timeInterval: 5, + title: "this is title", + content: "this is content", + expiredContent: "this reminder has expired", + snoozeContent: "remind later", + notificationId: 100, + slotType: notification.SlotType.SOCIAL_COMMUNICATION +} + +// 闹钟实例定义: +let alarm : reminderAgent.ReminderRequestAlarm = { + reminderType: reminderAgent.ReminderType.REMINDER_TYPE_ALARM, + hour: 11, + minute: 14, + daysOfWeek: [0], + actionButton: [ + { + title: "close", + type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE }, - maxScreenWantAgent: { - pkgName: "com.example.device", - abilityName: "com.example.device.MainAbility" + { + title: "snooze", + type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE }, - ringDuration: 5, - snoozeTimes: 2, - timeInterval: 5, - title: "this is title", - content: "this is content", - expiredContent: "this reminder has expired", - snoozeContent: "remind later", - notificationId: 100, - slotType: notification.SlotType.SOCIAL_COMMUNICATION + ], + wantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + maxScreenWantAgent: { + pkgName: "com.example.device", + abilityName: "com.example.device.MainAbility" + }, + ringDuration: 5, + snoozeTimes: 2, + timeInterval: 5, + title: "this is title", + content: "this is content", + expiredContent: "this reminder has expired", + snoozeContent: "remind later", + notificationId: 100, + slotType: notification.SlotType.SOCIAL_COMMUNICATION +} + +@Entry +@Component +struct Index { + @State message: string = 'test' + + publishReminder() { + reminderAgent.publishReminder(timer, (err, reminderId) => { + console.log("callback, reminderId = " + reminderId); + }); + } + + build() { + Row() { + Column() { + Text("Index") + .fontSize(50) + .fontWeight(FontWeight.Bold) + + Button() { Text('倒计时提醒代理').fontSize(25).fontWeight(FontWeight.Bold) }.type(ButtonType.Capsule) + .margin({ top: 10 }).backgroundColor('#0D9FFB').width(250).height(40) + .onClick(() => { + // 示例通过按钮控制提醒代理的发布 + this.publishReminder(); + }) + + } + .width('100%') } - ``` - -2. 发布倒计时提醒。 - ```js - startTimer() { - reminderAgent.publishReminder(this.timer, (err, reminderId) =>{ - this.printInfo(JSON.stringify(err)); - this.printInfo("reminderId:" + reminderId); - }); - } - ``` - - HML页面: - ```html -
- -
- ``` + .height('100%') + } +} +``` ## 相关实例 diff --git a/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-overview.md b/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-overview.md index d31a74e423230d965ccda41153480ae2348f945f..a7da0fe1e9b46e5ccb379677a57e0da65cad36f7 100644 --- a/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-overview.md +++ b/zh-cn/application-dev/task-management/background-agent-scheduled-reminder-overview.md @@ -1,3 +1,12 @@ # 后台代理提醒概述 -开发者在应用开发时,可以调用后台代理提醒类ReminderRequest去创建定时提醒,包括倒计时、日历、闹钟三种提醒类型。使用后台代理提醒能力后,应用可以被冻结或退出,计时和弹出提醒的功能将被后台系统服务代理。 +OpenHarmony设计了相关的后台活动规范。三方应用退后台后如果没有执行相关的后台任务,会被挂起。而对于某些应用,可能需要在某些指定的时刻,处理一些工作。如购物类应用,可能需要在某些时间点,提醒用户有抢购活动可以参加。此类功能通常的实现是应用使用定时器,在时间达到后,由系统拉起应用,执行相关的任务。但是给应用开放了定时器的功能,可能会造成这个机制被滥用,导致后台被挂起的应用频繁地用定时器唤醒。为了避免恶意的后台活动,同时满足应用的业务诉求,设计了后台代理提醒功能。 +开发者在应用开发时,使用后台代理提醒能力后,应用可以被挂起或退出,计时和弹出提醒的功能将被后台系统服务代理。避免的应用被频繁唤醒的问题,有助于降低功耗。 + +## 提醒实例类型 + +- **倒计时类型**:基于倒计时的提醒功能,适用于短时的计时提醒业务。 + +- **日历类型**:基于日历的提醒功能,适用于较长时间的提醒业务。 + +- **闹钟类型**:基于时钟的提醒功能,应用可以使用此功能,实现闹钟相关的业务。 diff --git a/zh-cn/application-dev/task-management/background-task-dev-guide.md b/zh-cn/application-dev/task-management/background-task-dev-guide.md deleted file mode 100644 index 21d5bb76c6a986704252e9cc3cb577d9d159c75a..0000000000000000000000000000000000000000 --- a/zh-cn/application-dev/task-management/background-task-dev-guide.md +++ /dev/null @@ -1,657 +0,0 @@ -# 后台任务开发指导 - -## 场景介绍 - -应用或业务模块处于后台(无可见界面)时,如果有需要继续执行或者后续执行的业务,可基于业务类型,申请短时任务延迟挂起(Suspend)或者长时任务避免进入挂起状态。如果应用需要更加灵活的配置,可以申请能效资源。常见的使用能效资源的场景有:1.应用保证自己在一个时间段内不被挂起,直到任务完成;2.应用处于挂起状态时仍然需要系统的资源,例如闹钟需要计时器资源;3.延时任务需要不受到执行频率的限制,并且拥有更长的执行时间。 - -在挂起时如果需要单独的某种资源不被代理或者需要更长的延时任务执行时间,可以申请所需的能效资源。 - -## 短时任务 - -### 接口说明 - -**表1** 短时任务主要接口 - -> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。 - -| 接口名 | 描述 | -| ---------------------------------------- | ---------------------------------------- | -| requestSuspendDelay(reason: string, callback: Callback<void>): [DelaySuspendInfo](../reference/apis/js-apis-backgroundTaskManager.md#delaysuspendinfo) | 后台应用申请延迟挂起。
延迟挂起时间一般情况下默认值为180000,低电量时默认值为60000。 | -| getRemainingDelayTime(requestId: number): Promise<number> | 获取应用程序进入挂起状态前的剩余时间。
使用Promise形式返回。 | -| cancelSuspendDelay(requestId: number): void | 取消延迟挂起。 | - - -### 开发步骤 - - -1. 申请延迟挂起 - - ```js - import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - - let myReason = 'test requestSuspendDelay'; - try { - let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => { - console.info("Request suspension delay will time out."); - }) - var id = delayInfo.requestId; - var time = delayInfo.actualDelayTime; - console.info("The requestId is: " + id); - console.info("The actualDelayTime is: " + time); - } catch (error) { - console.error(`requestSuspendDelay failed. code is ${error.code} message is ${error.message}`); - } - ``` - - -2. 获取进入挂起前的剩余时间 - - ```js - try { - backgroundTaskManager.getRemainingDelayTime(id, (error, res) => { - if(error) { - console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`); - } else { - console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res)); - } - }) - } catch (error) { - console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`); - } - ``` - - -3. 取消延迟挂起 - - ```js - try { - backgroundTaskManager.cancelSuspendDelay(id); - } catch (error) { - console.error(`cancelSuspendDelay failed. code is ${error.code} message is ${error.message}`); - } - ``` - - -### 开发实例 - -```js -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; -let myReason = 'test requestSuspendDelay'; -var delayInfo; -// 申请延迟挂起 -try { - delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => { - console.info("Request suspension delay will time out."); - }) -} catch (error) { - console.error(`requestSuspendDelay failed. code is ${error.code} message is ${error.message}`); -} - -// 打印延迟挂起信息 -var id = delayInfo.requestId; -var time = delayInfo.actualDelayTime; -console.info("The requestId is: " + id); -console.info("The actualDelayTime is: " + time); - -// 获取应用程序进入挂起状态前的剩余时间 -try { - backgroundTaskManager.getRemainingDelayTime(id, (error, res) => { - if(error) { - console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`); - } else { - console.log('callback => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res)); - } - }) -} catch (error) { - console.error(`callback => Operation getRemainingDelayTime failed. code is ${error.code} message is ${error.message}`); -} - -// 取消延迟挂起 -try { - backgroundTaskManager.cancelSuspendDelay(id); -} catch (error) { - console.error(`cancelSuspendDelay failed. code is ${error.code} message is ${error.message}`); -} -``` - -## 长时任务 - -### 权限 - -ohos.permission.KEEP_BACKGROUND_RUNNING - -### 接口说明 - -**表2** 长时任务主要接口 - -> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。 - -| 接口名 | 描述 | -| ---------------------------------------- | ---------------------------- | -| startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void> | 服务启动后,向系统申请长时任务,使服务一直保持后台运行。 | -| stopBackgroundRunning(context: Context): Promise<void> | 停止后台长时任务的运行。 | - - -其中,wantAgent的信息详见([WantAgent](../reference/apis/js-apis-wantAgent.md)) - -**表3** 后台模式类型 - -| 参数名 | id值 | 描述 | 配置项 | -| ----------------------- | ---- | -------------- | --------------------- | -| DATA_TRANSFER | 1 | 数据传输 | dataTransfer | -| AUDIO_PLAYBACK | 2 | 音频播放 | audioPlayback | -| AUDIO_RECORDING | 3 | 录音 | audioRecording | -| LOCATION | 4 | 定位导航 | location | -| BLUETOOTH_INTERACTION | 5 | 蓝牙相关 | bluetoothInteraction | -| MULTI_DEVICE_CONNECTION | 6 | 多设备互联 | multiDeviceConnection | -| WIFI_INTERACTION | 7 | WLAN相关(系统保留) | wifiInteraction | -| VOIP | 8 | 音视频通话(系统保留) | voip | -| TASK_KEEPING | 9 | 计算任务(仅供特定设备使用) | taskKeeping | - - -### 开发步骤 - -基于FA模型: - -1. 新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”。 - - ``` - "module": { - "package": "com.example.myapplication", - "abilities": [ - { - "backgroundModes": [ - "dataTransfer", - "location" - ], // 后台模式类型 - "type": "service" // ability类型为service - } - ], - "reqPermissions": [ - { - "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限 - } - ] - } - ``` - -2. 申请长时任务。 - - ```js - import backgroundTaskManager from '@ohos.backgroundTaskManager'; - import featureAbility from '@ohos.ability.featureAbility'; - import wantAgent from '@ohos.wantAgent'; - - let wantAgentInfo = { - wants: [ - { - bundleName: "com.example.myapplication", - abilityName: "com.example.myapplication.MainAbility" - } - ], - operationType: wantAgent.OperationType.START_ABILITY, - requestCode: 0, - wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] - }; - - // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 - wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { - console.info("Operation startBackgroundRunning succeeded"); - }).catch((err) => { - console.error("Operation startBackgroundRunning failed Cause: " + err); - }); - }); - ``` - -3. 停止长时任务。 - - ```js - import backgroundTaskManager from '@ohos.backgroundTaskManager'; - import featureAbility from '@ohos.ability.featureAbility'; - - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { - console.info("Operation stopBackgroundRunning succeeded"); - }).catch((err) => { - console.error("Operation stopBackgroundRunning failed Cause: " + err); - }); - - ``` - -基于Stage模型: - -1. 新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限、后台模式类型。 - - ``` - "module": { - "abilities": [ - { - "backgroundModes": [ - "dataTransfer", - "location" - ], // 后台模式类型 - } - ], - "requestPermissions": [ - { - "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限 - } - ] - } - ``` - -2. 申请长时任务。 - - ```ts - import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - import wantAgent from '@ohos.wantAgent'; - - let wantAgentInfo = { - wants: [ - { - bundleName: "com.example.myapplication", - abilityName: "com.example.myapplication.MainAbility" - } - ], - operationType: wantAgent.OperationType.START_ABILITY, - requestCode: 0, - wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] - }; - - // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 - wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { - try { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { - console.info("Operation startBackgroundRunning succeeded"); - }).catch((error) => { - console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - }); - } catch (error) { - console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - } - }); - ``` - -3. 停止长时任务。 - - ```ts - import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - - try { - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { - console.info("Operation stopBackgroundRunning succeeded"); - }).catch((err) => { - console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - }); - } catch (error) { - console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - } - - ``` - - -### 开发实例 - -基于FA模型: - -基于FA的Service Ability使用,参考[ServiceAbility开发指导](../ability/fa-serviceability.md)。 - -当不需要与后台执行的长时任务交互时,可以采用startAbility()方法启动Service Ability。并在Service Ability的onStart回调方法中,调用长时任务的申请接口,声明此服务需要在后台长时运行。当任务执行完,再调用长时任务取消接口,及时释放资源。 - -当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。 - -```js -import backgroundTaskManager from '@ohos.backgroundTaskManager'; -import featureAbility from '@ohos.ability.featureAbility'; -import wantAgent from '@ohos.wantAgent'; -import rpc from "@ohos.rpc"; - -function startContinuousTask() { - let wantAgentInfo = { - // 点击通知后,将要执行的动作列表 - wants: [ - { - bundleName: "com.example.myapplication", - abilityName: "com.example.myapplication.MainAbility" - } - ], - // 点击通知后,动作类型 - operationType: wantAgent.OperationType.START_ABILITY, - // 使用者自定义的一个私有值 - requestCode: 0, - // 点击通知后,动作执行属性 - wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] - }; - - // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 - wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { - console.info("Operation startBackgroundRunning succeeded"); - }).catch((err) => { - console.error("Operation startBackgroundRunning failed Cause: " + err); - }); - }); -} - -function stopContinuousTask() { - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { - console.info("Operation stopBackgroundRunning succeeded"); - }).catch((err) => { - console.error("Operation stopBackgroundRunning failed Cause: " + err); - }); -} - -async function processAsyncJobs() { - // 此处执行具体的长时任务。 - - // 长时任务执行完,调用取消接口,释放资源。 - stopContinuousTask(); -} - -let mMyStub; - -class MyStub extends rpc.RemoteObject { - constructor(des) { - if (typeof des === 'string') { - super(des); - } else { - return null; - } - } - onRemoteRequest(code, data, reply, option) { - console.log('ServiceAbility onRemoteRequest called'); - // code 的具体含义用户自定义 - if (code === 1) { - // 接收到申请长时任务的请求码 - startContinuousTask(); - // 此处执行具体长时任务 - } else if (code === 2) { - // 接收到取消长时任务的请求码 - stopContinuousTask(); - } else { - console.log('ServiceAbility unknown request code'); - } - return true; - } -} - -export default { - onStart(want) { - console.info('ServiceAbility onStart'); - mMyStub = new MyStub("ServiceAbility-test"); - // 在执行后台长时任前,调用申请接口。 - startContinuousTask(); - processAsyncJobs(); - }, - onStop() { - console.info('ServiceAbility onStop'); - }, - onConnect(want) { - console.info('ServiceAbility onConnect'); - return mMyStub; - }, - onReconnect(want) { - console.info('ServiceAbility onReconnect'); - }, - onDisconnect() { - console.info('ServiceAbility onDisconnect'); - }, - onCommand(want, restart, startId) { - console.info('ServiceAbility onCommand'); - } -}; -``` - -基于Stage模型: - -Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)。 -当应用需要在后台执行长时任务时,可以通过Call的方式在后台创建并运行Ability。使用方式参考[Call调用开发指导](../ability/stage-call.md)。 - -```ts -import Ability from '@ohos.application.Ability' -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; -import wantAgent from '@ohos.wantAgent'; - -let mContext = null; - -function startContinuousTask() { - let wantAgentInfo = { - // 点击通知后,将要执行的动作列表 - wants: [ - { - bundleName: "com.example.myapplication", - abilityName: "com.example.myapplication.MainAbility" - } - ], - // 点击通知后,动作类型 - operationType: wantAgent.OperationType.START_ABILITY, - // 使用者自定义的一个私有值 - requestCode: 0, - // 点击通知后,动作执行属性 - wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] - }; - - // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 - wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { - try { - backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), - backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { - console.info("Operation startBackgroundRunning succeeded"); - }).catch((error) => { - console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - }); - } catch (error) { - console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - } - }); -} - -function stopContinuousTask() { - try { - backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { - console.info("Operation stopBackgroundRunning succeeded"); - }).catch((err) => { - console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - }); - } catch (error) { - console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); - } -} - -class MySequenceable { - num: number = 0; - str: String = ""; - - constructor(num, string) { - this.num = num; - this.str = string; - } - - marshalling(messageParcel) { - messageParcel.writeInt(this.num); - messageParcel.writeString(this.str); - return true; - } - - unmarshalling(messageParcel) { - this.num = messageParcel.readInt(); - this.str = messageParcel.readString(); - return true; - } -} - -function sendMsgCallback(data) { - console.info('BgTaskAbility funcCallBack is called ' + data) - let receivedData = new Mysequenceable(0, "") - data.readSequenceable(receivedData) - console.info(`receiveData[${receivedData.num}, ${receivedData.str}]`) - if (receivedData.str === 'start_bgtask') { - startContinuousTask() - } else if (receivedData.str === 'stop_bgtask') { - stopContinuousTask(); - } - return new Mysequenceable(10, "Callee test"); -} - -export default class BgTaskAbility extends Ability { - onCreate(want, launchParam) { - console.info("[Demo] BgTaskAbility onCreate") - this.callee.on("test", sendMsgCallback); - - try { - this.callee.on(MSG_SEND_METHOD, sendMsgCallback) - } catch (error) { - console.error(`${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`) - } - mContext = this.context; - } - - onDestroy() { - console.info("[Demo] BgTaskAbility onDestroy") - } - - onWindowStageCreate(windowStage) { - console.info("[Demo] BgTaskAbility onWindowStageCreate") - - windowStage.loadContent("pages/second").then((data)=> { - console.info(`load content succeed with data ${JSON.stringify(data)}`) - }).catch((error)=>{ - console.error(`load content failed with error ${JSON.stringify(error)}`) - }) - } - - onWindowStageDestroy() { - console.info("[Demo] BgTaskAbility onWindowStageDestroy") - } - - onForeground() { - console.info("[Demo] BgTaskAbility onForeground") - } - - onBackground() { - console.info("[Demo] BgTaskAbility onBackground") - } -}; -``` - -## 能效资源申请 - -### 接口说明 - -**表1** 能效资源申请主要接口 - -> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。 - -| 接口名 | 描述 | -| ---------------------------------------- | ---------------------------------------- | -| applyEfficiencyResources(request: [EfficiencyResourcesRequest](../reference/apis/js-apis-backgroundTaskManager.md#efficiencyresourcesrequest9)): void | 申请能效资源。 | -| resetAllEfficiencyResources():void | 释放申请的能效资源。 | - - -### 开发步骤 - - -1. 申请能效资源 - -```js -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - -let request = { - resourceTypes: backgroundTaskManager.ResourceType.CPU, - isApply: true, - timeOut: 0, - reason: "apply", - isPersist: true, - isProcess: true, -}; -try { - backgroundTaskManager.applyEfficiencyResources(request); - console.info("applyEfficiencyResources success. "); -} catch (error) { - console.error(`applyEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} -``` - -2. 释放申请的部分资源 - -```js -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - -let request = { - resourceTypes: backgroundTaskManager.ResourceType.CPU, - isApply: false, - timeOut: 0, - reason: "reset", -}; -try { - backgroundTaskManager.applyEfficiencyResources(request); - console.info("applyEfficiencyResources success. "); -} catch (error) { - console.error(`applyEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} -``` - -3. 释放申请的所有资源 - -```js -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - -try { - backgroundTaskManager.backgroundTaskManager.resetAllEfficiencyResources(); -} catch (error) { - console.error(`resetAllEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} -``` - -### 开发实例 - -```js -import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; - -// 申请能效资源 -let request = { - resourceTypes: backgroundTaskManager.ResourceType.COMMON_EVENT | - backgroundTaskManager.ResourceType.TIMER, - isApply: true, - timeOut: 0, - reason: "apply", - isPersist: true, - isProcess: true, -}; -try { - backgroundTaskManager.applyEfficiencyResources(request); - console.info("applyEfficiencyResources success. "); -} catch (error) { - console.error(`applyEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} - -// 释放部分资源 -request = { - resourceTypes: backgroundTaskManager.ResourceType.COMMON_EVENT, - isApply: false, - timeOut: 0, - reason: "reset", -}; -try { - backgroundTaskManager.applyEfficiencyResources(request); - console.info("applyEfficiencyResources success. "); -} catch (error) { - console.error(`applyEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} - -// 释放全部资源 -try { - backgroundTaskManager.backgroundTaskManager.resetAllEfficiencyResources(); -} catch (error) { - console.error(`resetAllEfficiencyResources failed. code is ${error.code} message is ${error.message}`); -} -``` - -## 相关实例 - -基于后台任务管理,有以下相关实例可供参考: - -- [`BackgroundTaskManager`:后台任务管理(ArkTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/ResourcesSchedule/BackgroundTaskManager) \ No newline at end of file diff --git a/zh-cn/application-dev/task-management/background-task-overview.md b/zh-cn/application-dev/task-management/background-task-overview.md index a045739051f012c791ca6b093c0afc362ebd7749..c24d818516a8d473bca665304c4d8851f2b531f2 100644 --- a/zh-cn/application-dev/task-management/background-task-overview.md +++ b/zh-cn/application-dev/task-management/background-task-overview.md @@ -1,26 +1,32 @@ # 后台任务概述 -后台应用频繁活动,会造成用户设备耗电快、卡顿等现象。因此,为了支撑性能、功耗诉求,系统仅允许应用在后台执行规范内的活动,规范外的活动默认会被挂起,当资源不足时会被回收。同时,应用可以申请能效资源,保证自己在一段时间内不会被挂起,或者在挂起状态能够正常使用一些资源,例如公共事件、计时器等。 +后台应用频繁活动,会造成用户设备耗电快、卡顿等现象。因此,为了支撑性能、功耗诉求,系统仅允许应用在后台执行规范内的活动,规范外的活动默认会被挂起,当资源不足时会被回收。 +针对应用或业务模块处于后台(无可见界面)时,有需要继续执行或者后续执行的业务,可基于业务类型,申请[短时任务](#短时任务)延迟挂起或者[长时任务](#长时任务)避免进入挂起状态;使用[延迟调度任务](#延迟任务),执行对实时性要求不高的任务;同时针对特权应用,如果需要更加灵活的配置,可以申请[能效资源](#申请能效资源)。 ## 后台任务类型 -本文描述的后台任务特指应用或业务模块处于后台(无可见界面)时,有需要继续执行或者后续执行的业务。OpenHarmony将后台任务分为三种类型,并执行不同的处理: +OpenHarmony将后台任务分为四种类型,并提供了一个资源申请的扩展功能: - **1. 无后台业务** :应用或业务模块退到后台后,无任务需要处理。 + **无后台业务** :应用或业务模块退到后台后,无任务需要处理。 - **2. 短时任务** :应用或业务模块退到后台后,如果有紧急不可推迟且短时间能完成的任务,如应用退后台要进行数据压缩,不可中断,则使用短时任务申请延迟进入挂起(Suspend)状态。 + **短时任务** :应用或业务模块退到后台后,如果有紧急不可推迟且短时间能完成的任务,如应用退后台要进行数据压缩,不可中断,则使用短时任务申请延迟进入挂起(Suspend)状态。 - **3. 长时任务** :如果是用户发起的可感知业务需要长时间后台运行,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。 + **长时任务** :如果是用户发起的可感知业务需要长时间后台运行,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。 - **4. 能效资源** :能效资源包括CPU资源、WORK_SCHEDULER资源、软件资源(COMMON_EVENT, TIMER)、硬件资源(GPS, BLUETOOTH)。如果应用或者进程申请了能效资源,那么根据能效资源的类型会拥有相应的特权,例如申请了CPU资源的可以不被挂起,申请了WORK_SCHEDULER后延时任务可以拥有更长的执行时间。 + **延迟任务** :延迟任务调度给应用提供一个机制,允许应用根据系统安排,在系统空闲时执行实时性不高的任务。当满足设定条件的时候,任务会被放入待调度队列,当系统空闲时调度该任务。 + **能效资源** :能效资源包括CPU资源、WORK_SCHEDULER资源、软件资源(COMMON_EVENT, TIMER)、硬件资源(GPS, BLUETOOTH)。如果应用或者进程申请了能效资源,那么根据能效资源的类型会拥有相应的特权,例如申请了CPU资源的可以不被挂起,申请了WORK_SCHEDULER后延时任务可以拥有更长的执行时间。 + +## 最佳后台任务选择 + +![后台任务选择](public_sys-resources/bgtask_choice.png) ## 短时任务 退到后台的应用有不可中断且短时间能完成的任务时,可以使用短时任务机制。该机制允许应用在后台短时间内完成任务,保障应用业务运行不受后台生命周期管理的影响。 -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> **说明:** > 短时任务仅针对应用的临时任务提供资源使用生命周期保障,限制单次最大使用时长为3分钟,全天使用配额默认为10分钟(具体时长系统根据应用场景和系统状态智能调整)。 @@ -63,9 +69,44 @@ OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业 - 长时任务是为了真正在后台长时间执行某个任务,如果一个应用申请了长时任务,但在实际运行过程中,并未真正运行或执行此类任务时,也会被系统检测到并被挂起(Suspend)。 - 一个Ability同一时刻只能申请运行一个长时任务。 -## 能效资源申请 -能效资源可以分为四种,CPU资源,WORK_SCHEDULER资源,软件资源(COMMON_EVENT,TIMER),硬件资源(GPS,BLOOTOOTH,AUDIO)。 -应用或进程申请能效资源后能够获得相应特权,例如:申请CPU资源后可以不被挂起;申请WORK_SCHEDULER资源后不受延迟任务执行频率约束,且任务执行时间增加;申请软件、硬件资源后,相关资源在挂起状态下不被代理。 +## 延迟任务 +延迟任务调度给应用提供一个机制,允许应用根据系统安排,在系统空闲时执行实时性要求不高的任务,比如设备空闲时候做一次数据学习等场景。当应用申请延迟任务的时候,任务会被放入待调度队列,系统会根据当前状态,如内存、功耗、温度等统一决策最优的调度时机。同时支持任务的持久化,应用退出或者设备重启,设置的任务同样能够被触发。 + +### 延迟任务调度约束 + +延迟调度任务的使用需要遵从如下约束和规则: + +- **超时**:系统会设置超时机制,延迟任务回调只允许运行一段时间,超时之后,系统会主动停止。默认的超时限制为2分钟,对于系统应用,可以通过[申请能效资源](efficiency-resources-apply-dev-guide.md)获取更长的执行时间(充电状态20分钟,非充电状态10分钟)。 +- **执行频率**:系统会根据应用的活跃度对延迟任务做分级管控,限制延迟任务调度的执行频率。对于通过能效资源接口申请了WORK_SCHEDULER资源的应用,在资源的有效期内,它的延迟任务执行频率不受限制。 + + | 应用分组 | 延迟任务执行频率约束 | + | --------------------|------------------------- | + | 活跃 | 最小间隔2小时 | + | 每日使用 | 最小间隔4小时 | + | 经常使用 | 最小间隔24小时 | + | 不经常使用 | 最小间隔48小时 | + | 受限分组 | 禁止 | + | 未使用分组 | 禁止 | + | [能效资源豁免分组](../reference/apis/js-apis-backgroundTaskManager.md#resourcetype9) | 执行频率不受限制 | + +- **WorkInfo设置参数约束** + + - workId、bundleName、abilityName为必填项,bundleName必须填本应用,否则校验失败。 + + - 至少要设置一个满足的条件。 + + - 重复任务时间间隔至少20分钟,当设置重复任务时间间隔时,必须设置始终重复和重复次数中的一个。 + + - 携带参数信息支持number、string、bool三种类型。 + +## 申请能效资源 +能效资源可以分为四种:CPU资源,WORK_SCHEDULER资源,软件资源(COMMON_EVENT,TIMER),硬件资源(GPS,BLUETOOTH,AUDIO)。 + +应用或进程申请能效资源后能够获得相应特权: + * 申请CPU资源后可以不被挂起,直到任务完成。 + * 申请WORK_SCHEDULER资源后不受延迟任务执行频率约束,且任务执行时间增加 + * 申请COMMON_EVENT资源后,应用在后台处于挂起状态时,仍然能够接收到系统公共事件,申请TIMER资源后,应用能够使用定时器执行精确定时任务、 + * 申请硬件资源后,应用在后台被挂起后,依然能够被相关服务唤醒,执行相应的任务。 **表1** 能效资源种类 @@ -84,3 +125,4 @@ OpenHarmony提供了九种后台模式,供需要在后台做长时任务的业 - 能效资源申请或者释放可以由进程或者应用发起,由应用发起的资源释放会释放属于它的同类型的所有资源,包括进程申请的资源。例如应用申请了CPU资源,进程申请了CPU和WORK_SCHEDULER资源,当应用释放CPU资源的时候,会将进程的CPU资源一同释放,同时不同类型的WORK_SCHEDULER资源不受影响。由进程发起的资源释放对应用申请的资源没有影响,例如当应用和进程同时申请了CPU,进程发起了CPU资源释放,应用的CPU资源不会被释放。 - 同时申请同一类持久资源和非持久资源,持久资源会覆盖非持久资源,在超时时不会释放资源。例如应用首先申请了10s的CPU资源,然后在第5s的时候申请了持久的CPU资源,那么资源会变成持久的,非持久的CPU资源记录会被持久化的CPU资源记录覆盖,到了第10s的时候资源不会被释放,如果在第8s的时候提前释放了资源,那么会将CPU资源释放,无法单独释放其中非持久的或者持久的CPU资源。 - WORK_SCHEDULER资源只能由应用申请和释放,不能由进程申请和释放。 +- 需要使用能效资源的应用,需要向应用中心提出申请,获取相应的特权。 diff --git a/zh-cn/application-dev/task-management/continuous-task-dev-guide.md b/zh-cn/application-dev/task-management/continuous-task-dev-guide.md new file mode 100644 index 0000000000000000000000000000000000000000..499affe241908833cb616c67abf9cc225bf9240c --- /dev/null +++ b/zh-cn/application-dev/task-management/continuous-task-dev-guide.md @@ -0,0 +1,435 @@ +## 长时任务 + +### 场景说明 + +如果应用需要在后台长时间执行用户可感知的任务,如后台播放音乐、导航、设备连接、VoIP等,则使用长时任务避免进入挂起(Suspend)状态。 +长时任务在后台执行没有时间限制。为了避免该机制被滥用,系统只允许申请有限个数的长时任务类型,同时会有相应的通知提示与长时任务相关联,使用户可感知,并且系统会添加相应的校验机制,确保应用是的确在执行相应的长时任务。 + +### 权限 + +ohos.permission.KEEP_BACKGROUND_RUNNING + +### 接口说明 + +**表2** 长时任务主要接口 + +> **说明:** 后台任务管理错误码见[backgroundTaskManager错误码](../errorcodes/errorcode-backgroundTaskMgr.md)。 + +| 接口名 | 描述 | +| ---------------------------------------- | ---------------------------- | +| startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void> | 服务启动后,向系统申请长时任务,使服务一直保持后台运行。 | +| stopBackgroundRunning(context: Context): Promise<void> | 停止后台长时任务的运行。 | + + +其中,wantAgent的信息详见([WantAgent](../reference/apis/js-apis-wantAgent.md)) + +**表3** 后台模式类型 + +| 参数名 | id值 | 描述 | 配置项 | +| ----------------------- | ---- | -------------- | --------------------- | +| DATA_TRANSFER | 1 | 数据传输 | dataTransfer | +| AUDIO_PLAYBACK | 2 | 音频播放 | audioPlayback | +| AUDIO_RECORDING | 3 | 录音 | audioRecording | +| LOCATION | 4 | 定位导航 | location | +| BLUETOOTH_INTERACTION | 5 | 蓝牙相关 | bluetoothInteraction | +| MULTI_DEVICE_CONNECTION | 6 | 多设备互联 | multiDeviceConnection | +| WIFI_INTERACTION | 7 | WLAN相关(系统保留) | wifiInteraction | +| VOIP | 8 | 音视频通话(系统保留) | voip | +| TASK_KEEPING | 9 | 计算任务(仅供特定设备使用) | taskKeeping | + + +### 开发步骤 + +基于FA模型: + +基于FA的Service Ability使用,参考[ServiceAbility开发指导](../ability/fa-serviceability.md)。 + +当不需要与后台执行的长时任务交互时,可以采用startAbility()方法启动Service Ability。并在Service Ability的onStart回调方法中,调用长时任务的申请接口,声明此服务需要在后台长时运行。当任务执行完,再调用长时任务取消接口,及时释放资源。 + +当需要与后台执行的长时任务交互时(如播放音乐等)。可以采用connectAbility()方法启动并连接Service Ability。在获取到服务的代理对象后,与服务进行通信,控制长时任务的申请和取消。 + +1、新建Api Version 8的工程后,在工程目录中右键选择“new” -> “Ability” -> “Service Ability” 快速创建Service Ability组件。并在config.json文件中配置长时任务权限、后台模式类型,其中Ability类型为“service”。 + +``` +"module": { + "package": "com.example.myapplication", + "abilities": [ + { + "backgroundModes": [ + "dataTransfer", + "location" + ], // 后台模式类型 + "type": "service" // ability类型为service + } + ], + "reqPermissions": [ + { + "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限 + } + ] +} +``` + +2、在Service Ability调用长时任务的申请和取消接口。 + +```js +import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; +import featureAbility from '@ohos.ability.featureAbility'; +import wantAgent from '@ohos.wantAgent'; +import rpc from "@ohos.rpc"; + +function startContinuousTask() { + let wantAgentInfo = { + // 点击通知后,将要执行的动作列表 + wants: [ + { + bundleName: "com.example.myapplication", + abilityName: "com.example.myapplication.MainAbility" + } + ], + // 点击通知后,动作类型 + operationType: wantAgent.OperationType.START_ABILITY, + // 使用者自定义的一个私有值 + requestCode: 0, + // 点击通知后,动作执行属性 + wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] + }; + + // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 + wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { + try { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { + console.info("Operation startBackgroundRunning succeeded"); + }).catch((err) => { + console.error("Operation startBackgroundRunning failed Cause: " + err); + }); + } catch (error) { + console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } + }); +} + +function stopContinuousTask() { + try { + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { + console.info("Operation stopBackgroundRunning succeeded"); + }).catch((err) => { + console.error("Operation stopBackgroundRunning failed Cause: " + err); + }); + } catch (error) { + console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } +} + +async function processAsyncJobs() { + // 此处执行具体的长时任务。 + + // 长时任务执行完,调用取消接口,释放资源。 + stopContinuousTask(); +} + +let mMyStub; + +class MyStub extends rpc.RemoteObject { + constructor(des) { + if (typeof des === 'string') { + super(des); + } else { + return null; + } + } + onRemoteRequest(code, data, reply, option) { + console.log('ServiceAbility onRemoteRequest called'); + // code 的具体含义用户自定义 + if (code === 1) { + // 接收到申请长时任务的请求码 + startContinuousTask(); + // 此处执行具体长时任务 + } else if (code === 2) { + // 接收到取消长时任务的请求码 + stopContinuousTask(); + } else { + console.log('ServiceAbility unknown request code'); + } + return true; + } +} + +export default { + onStart(want) { + console.info('ServiceAbility onStart'); + mMyStub = new MyStub("ServiceAbility-test"); + // 在执行后台长时任前,调用申请接口。 + startContinuousTask(); + processAsyncJobs(); + }, + onStop() { + console.info('ServiceAbility onStop'); + }, + onConnect(want) { + console.info('ServiceAbility onConnect'); + return mMyStub; + }, + onReconnect(want) { + console.info('ServiceAbility onReconnect'); + }, + onDisconnect() { + console.info('ServiceAbility onDisconnect'); + }, + onCommand(want, restart, startId) { + console.info('ServiceAbility onCommand'); + } +}; +``` + +基于Stage模型: + +Stage模型的相关信息参考[Stage模型综述](../ability/stage-brief.md)。 + +1、新建Api Version 9的工程后,在工程目录中右键选择“New” -> “Ability” 快速创建Ability组件。并在module.json5文件中配置长时任务权限、后台模式类型。 + +``` +"module": { + "abilities": [ + { + "backgroundModes": [ + "dataTransfer", + "location" + ], // 后台模式类型 + } + ], + "requestPermissions": [ + { + "name": "ohos.permission.KEEP_BACKGROUND_RUNNING" // 长时任务权限 + } + ] +} +``` + +2、在应用内执行长时任务时,由于元能力启动管控规则限制,不支持同应用通过startAbilityByCall的形式在后台创建并运行Ability。可以直接在page中,执行相应的代码。Stage模型的Ability使用参考[Ability开发指导](../ability/stage-ability.md)。 + +```ts +import wantAgent from '@ohos.wantAgent'; +import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; + +@Entry +@Component +struct Index { + @State message: string = 'test' + // 通过getContext方法,来获取page所在的Ability上下文。 + private context: any = getContext(this) + + startContinuousTask() { + let wantAgentInfo = { + // 点击通知后,将要执行的动作列表 + wants: [ + { + bundleName: "com.example.myapplication", + abilityName: "com.example.myapplication.MainAbility", + } + ], + // 点击通知后,动作类型 + operationType: wantAgent.OperationType.START_ABILITY, + // 使用者自定义的一个私有值 + requestCode: 0, + // 点击通知后,动作执行属性 + wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] + }; + + // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 + wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { + try { + backgroundTaskManager.startBackgroundRunning(this.context, + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { + console.info("Operation startBackgroundRunning succeeded"); + }).catch((err) => { + console.error("Operation startBackgroundRunning failed Cause: " + err); + }); + } catch (error) { + console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } + }); + } + + stopContinuousTask() { + try { + backgroundTaskManager.stopBackgroundRunning(this.context).then(() => { + console.info("Operation stopBackgroundRunning succeeded"); + }).catch((err) => { + console.error("Operation stopBackgroundRunning failed Cause: " + err); + }); + } catch (error) { + console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } + } + + build() { + Row() { + Column() { + Text("Index") + .fontSize(50) + .fontWeight(FontWeight.Bold) + + Button() { Text('申请长时任务').fontSize(25).fontWeight(FontWeight.Bold) }.type(ButtonType.Capsule) + .margin({ top: 10 }).backgroundColor('#0D9FFB').width(250).height(40) + .onClick(() => { + // 通过按钮申请长时任务 + this.startContinuousTask(); + + // 此处执行具体的长时任务逻辑,如放音等。 + }) + + Button() { Text('取消长时任务').fontSize(25).fontWeight(FontWeight.Bold) }.type(ButtonType.Capsule) + .margin({ top: 10 }).backgroundColor('#0D9FFB').width(250).height(40) + .onClick(() => { + // 此处结束具体的长时任务的执行 + + // 通过按钮取消长时任务 + this.stopContinuousTask(); + }) + } + .width('100%') + } + .height('100%') + } +} +``` + +3、当需要跨设备或者跨应用在后台执行长时任务时,可以通过Call的方式在后台创建并运行Ability。使用方式参考[Call调用开发指导](../ability/stage-call.md)。 + +```ts +import Ability from '@ohos.application.Ability' +import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager'; +import wantAgent from '@ohos.wantAgent'; + +const MSG_SEND_METHOD: string = 'CallSendMsg' + +let mContext = null; + +function startContinuousTask() { + let wantAgentInfo = { + // 点击通知后,将要执行的动作列表 + wants: [ + { + bundleName: "com.example.myapplication", + abilityName: "com.example.myapplication.MainAbility", + } + ], + // 点击通知后,动作类型 + operationType: wantAgent.OperationType.START_ABILITY, + // 使用者自定义的一个私有值 + requestCode: 0, + // 点击通知后,动作执行属性 + wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG] + }; + + // 通过wantAgent模块的getWantAgent方法获取WantAgent对象 + wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj) => { + try { + backgroundTaskManager.startBackgroundRunning(featureAbility.getContext(), + backgroundTaskManager.BackgroundMode.DATA_TRANSFER, wantAgentObj).then(() => { + console.info("Operation startBackgroundRunning succeeded"); + }).catch((error) => { + console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + }); + } catch (error) { + console.error(`Operation startBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } + }); +} + +function stopContinuousTask() { + try { + backgroundTaskManager.stopBackgroundRunning(featureAbility.getContext()).then(() => { + console.info("Operation stopBackgroundRunning succeeded"); + }).catch((err) => { + console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + }); + } catch (error) { + console.error(`Operation stopBackgroundRunning failed. code is ${error.code} message is ${error.message}`); + } +} + +class MySequenceable { + num: number = 0; + str: String = ""; + + constructor(num, string) { + this.num = num; + this.str = string; + } + + marshalling(messageParcel) { + messageParcel.writeInt(this.num); + messageParcel.writeString(this.str); + return true; + } + + unmarshalling(messageParcel) { + this.num = messageParcel.readInt(); + this.str = messageParcel.readString(); + return true; + } +} + +function sendMsgCallback(data) { + console.info('BgTaskAbility funcCallBack is called ' + data) + let receivedData = new MySequenceable(0, "") + data.readSequenceable(receivedData) + console.info(`receiveData[${receivedData.num}, ${receivedData.str}]`) + // 可以根据Caller端发送的序列化数据的str值,执行不同的方法。 + if (receivedData.str === 'start_bgtask') { + startContinuousTask() + } else if (receivedData.str === 'stop_bgtask') { + stopContinuousTask(); + } + return new MySequenceable(10, "Callee test"); +} + +export default class BgTaskAbility extends Ability { + onCreate(want, launchParam) { + console.info("[Demo] BgTaskAbility onCreate") + this.callee.on("test", sendMsgCallback); + + try { + this.callee.on(MSG_SEND_METHOD, sendMsgCallback) + } catch (error) { + console.error(`${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`) + } + mContext = this.context; + } + + onDestroy() { + console.info("[Demo] BgTaskAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + console.info("[Demo] BgTaskAbility onWindowStageCreate") + + windowStage.loadContent("pages/index").then((data)=> { + console.info(`load content succeed with data ${JSON.stringify(data)}`) + }).catch((error)=>{ + console.error(`load content failed with error ${JSON.stringify(error)}`) + }) + } + + onWindowStageDestroy() { + console.info("[Demo] BgTaskAbility onWindowStageDestroy") + } + + onForeground() { + console.info("[Demo] BgTaskAbility onForeground") + } + + onBackground() { + console.info("[Demo] BgTaskAbility onBackground") + } +}; +``` + +## 相关实例 + +基于后台任务管理,有以下相关实例可供参考: + +- [`BackgroundTaskManager`:后台任务管理(ArkTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/ResourcesSchedule/BackgroundTaskManager) \ No newline at end of file diff --git a/zh-cn/application-dev/task-management/efficiency-resources-apply-dev-guide.md b/zh-cn/application-dev/task-management/efficiency-resources-apply-dev-guide.md new file mode 100644 index 0000000000000000000000000000000000000000..ebdd94a0c1a20876b854d16a19725ad854c773f2 --- /dev/null +++ b/zh-cn/application-dev/task-management/efficiency-resources-apply-dev-guide.md @@ -0,0 +1,53 @@ +## 申请能效资源 + +### 场景说明 + +在实际的系统中,存在一些重要性高的系统应用,虽然此类应用相比普通应用具有一定的特权,但为了进一步平衡系统的功耗开销,这些应用同样需要支持在后台可被挂起。但对于系统特权应用,为了避免挂起后重要功能受到影响,提供了独立的能效资源申请接口,使这些特权应用可以在后台执行一些特殊的任务和使用特定的系统资源,例如在被挂起期间如果仍然希望能够收到系统公共事件,可以使用能效资源接口向系统申请使用公共事件资源。 + +对于需要升级为特权应用的,开发者需要合理评估自己的业务诉求,向应用中心提出申请。 + +### 接口说明 + +**表1** 申请能效资源主要接口 + +| 接口名 | 描述 | +| ---------------------------------------- | ---------------------------------------- | +| applyEfficiencyResources(request: [EfficiencyResourcesRequest](../reference/apis/js-apis-backgroundTaskManager.md#efficiencyresourcesrequest9)): boolean | 申请能效资源。 | +| resetAllEfficiencyResources():void | 释放申请的能效资源。 | + + +### 开发步骤 + +1、当特权应用需要在后台使用特殊资源时。向系统申请目标资源。 + +2、当资源使用完毕,需要及时释放。支持释放部分资源或全部资源。 + +```js +import backgroundTaskManager from '@ohos.backgroundTaskManager'; + +// 申请能效资源 +let request = { + resourceTypes: backgroundTaskManager.ResourceType.COMMON_EVENT | + backgroundTaskManager.ResourceType.TIMER, + isApply: true, + timeOut: 0, + reason: "apply", + isPersist: true, + isProcess: true, +}; +let res = backgroundTaskManager.applyEfficiencyResources(request); +console.info("the result of request is: " + res); + +// 释放部分资源 +request = { + resourceTypes: backgroundTaskManager.ResourceType.COMMON_EVENT, + isApply: false, + timeOut: 0, + reason: "reset", +}; +res = backgroundTaskManager.applyEfficiencyResources(request); +console.info("the result of request is: " + res); + +// 释放全部资源 +backgroundTaskManager.resetAllEfficiencyResources(); +``` diff --git a/zh-cn/application-dev/task-management/public_sys-resources/bgtask_choice.png b/zh-cn/application-dev/task-management/public_sys-resources/bgtask_choice.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1fd6eefab0302ba4f936828adefbedf8f6c1f8 Binary files /dev/null and b/zh-cn/application-dev/task-management/public_sys-resources/bgtask_choice.png differ diff --git a/zh-cn/application-dev/task-management/transient-task-dev-guide.md b/zh-cn/application-dev/task-management/transient-task-dev-guide.md new file mode 100644 index 0000000000000000000000000000000000000000..d27a88e576e312626e1c810ab9b90253b1223408 --- /dev/null +++ b/zh-cn/application-dev/task-management/transient-task-dev-guide.md @@ -0,0 +1,84 @@ +## 短时任务 + +### 场景说明 + +当应用退到后台默认有6到12秒的运行时长,超过该时间后,系统会将应用置为挂起状态。对于绝大多数应用,6到12秒的时间,足够执行一些重要的任务,但如果应用需要更多的时间,可以通过短时任务接口,扩展应用的执行时间。 +建议不要等到应用退后台后,才调用requestSuspendDelay方法申请延迟挂起,而是应该在执行任何的耗时操作前,都应该调用该接口,向系统申明扩展应用的执行时间。 +当应用在前台时,使用requestSuspendDelay方法,不会影响应用的短时任务配额。 + +由于每个应用每天的短时任务配额时间有限,当执行完耗时任务后,应当及时取消延迟挂起的申请。 + +一些典型的耗时任务有,需要保存一些状态数据到本地数据库,需要打开和处理一个大型文件,需要同步一些数据到应用的云端服务器等。 + + +### 接口说明 + + +**表1** 短时任务主要接口 + +| 接口名 | 描述 | +| ---------------------------------------- | ---------------------------------------- | +| requestSuspendDelay(reason: string, callback: Callback<void>): [DelaySuspendInfo](../reference/apis/js-apis-backgroundTaskManager.md#delaysuspendinfo) | 后台应用申请延迟挂起。
延迟挂起时间一般情况下默认值为180000,低电量时默认值为60000。 | +| getRemainingDelayTime(requestId: number): Promise<number> | 获取应用程序进入挂起状态前的剩余时间。
使用Promise形式返回。 | +| cancelSuspendDelay(requestId: number): void | 取消延迟挂起。 | + + +### 开发步骤 + +1、当应用需要开始执行一个耗时的任务时。调用短时任务申请接口,并且在任务执行完后,调用短时任务取消接口。 + +```js +import backgroundTaskManager from '@ohos.backgroundTaskManager'; + +let delayInfo; +let id; + +// 申请延迟挂起 +function requestSuspendDelay() { + let myReason = 'test requestSuspendDelay'; + delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => { + console.info("Request suspension delay will time out."); + // 此回调函数执行,表示应用的延迟挂起申请即将超时,应用需要执行一些清理和标注工作。 + }); + + id = delayInfo.requestId; + console.info("requestId is: " + id); +} + +// 获取进入挂起前的剩余时间 +function getRemainingDelayTime() { + let delayTime = 0; + backgroundTaskManager.getRemainingDelayTime(id).then((res) => { + console.log('promise => Operation getRemainingDelayTime succeeded. Data: ' + JSON.stringify(res)); + delayTime = res; + }).catch((err) => { + console.log('promise => Operation getRemainingDelayTime failed. Cause: ' + err.code); + }); + return delayTime; +} + +// 取消延迟挂起 +function cancelSuspendDelay() { + backgroundTaskManager.cancelSuspendDelay(id); +} + +function performingLongRunningTask() { + // 在执行具体的耗时任务前,调用短时任务申请接口。向系统申请延迟挂起,延长应用的后台执行时间。 + requestSuspendDelay(); + + // 通过剩余时间查询接口,获取可用时间配额。 + let delayTime = getRemainingDelayTime(); + + if (delayTime < 0) { // 如果时间配置少于一定的大小,考虑取消此次耗时操作。 + // 处理短时任务配额时间不够的场景 + + cancelSuspendDelay(); + return; + } + + // 此处执行具体的耗时任务。 + + // 耗时任务执行完,调用短时任务取消接口,避免配额浪费。 + cancelSuspendDelay(); +} +``` diff --git a/zh-cn/application-dev/task-management/work-scheduler-dev-guide.md b/zh-cn/application-dev/task-management/work-scheduler-dev-guide.md index f688d417b9780d822106350a3d369bbc48a61ecd..4f7a811c2d14b289d917e8ffafbe276f0319940b 100644 --- a/zh-cn/application-dev/task-management/work-scheduler-dev-guide.md +++ b/zh-cn/application-dev/task-management/work-scheduler-dev-guide.md @@ -2,7 +2,7 @@ ## 场景介绍 -应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见[延迟任务调度概述](./work-scheduler-overview.md)。 +应用要执行对实时性要求不高的任务或持久性任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时间。延迟任务调度约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束)。 ## 接口说明 注册相关接口包导入: @@ -35,7 +35,7 @@ isLastWorkTimeOut(workId: number): Promise\;| 获取上次任务是否 **表2** WorkInfo包含参数 -> **说明:** WorkInfo设置参数约束见[延迟任务调度概述](./work-scheduler-overview.md) +> **说明:** WorkInfo设置参数约束见[延迟任务调度约束](./background-task-overview.md#延迟任务调度约束) 参数名| 类型 |描述 ---------------------------------------------------------|-----------------------------------------|--------------------------------------------------------- @@ -62,173 +62,139 @@ onWorkStop(work: WorkInfo): void | 延迟调度任务结束回调 ### 开发步骤 -**开发对应的Extension** +1、开发对应的ExtensionAbility,用于回调执行具体的延迟任务。关于ExtensionAbility的介绍,参考[ExtensionAbility机制](../ability/stage-brief.md#extensionability机制)。 - import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility'; - - export default class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility { - onWorkStart(workInfo) { - console.log('MyWorkSchedulerExtensionAbility onWorkStart' + JSON.stringify(workInfo)); - } - onWorkStop(workInfo) { - console.log('MyWorkSchedulerExtensionAbility onWorkStop' + JSON.stringify(workInfo)); - } - } - - -**注册延迟任务** +```ts +import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility'; - import workScheduler from '@ohos.resourceschedule.workScheduler'; - - let workInfo = { - workId: 1, - batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, - isRepeat: false, - isPersisted: true, - bundleName: "com.example.myapplication", - abilityName: "MyExtension", - parameters: { - mykey0: 1, - mykey1: "string value", - mykey2: true, - mykey3: 1.5 - } +export default class MyExtension extends WorkSchedulerExtensionAbility { + onWorkStart(workInfo) { + console.log('MyWorkSchedulerExtensionAbility onWorkStart' + JSON.stringify(workInfo)); } - try{ - workScheduler.startWork(workInfo); - console.info('workschedulerLog startWork success'); - } catch (error) { - console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`); + onWorkStop(workInfo) { + console.log('MyWorkSchedulerExtensionAbility onWorkStop' + JSON.stringify(workInfo)); } +} +``` -**取消延迟任务** - +2、注册延迟任务 - import workScheduler from '@ohos.resourceschedule.workScheduler'; +```ts +import workScheduler from '@ohos.resourceschedule.workScheduler'; - let workInfo = { - workId: 1, - batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, - isRepeat: false, - isPersisted: true, - bundleName: "com.example.myapplication", - abilityName: "MyExtension", - parameters: { - mykey0: 1, - mykey1: "string value", - mykey2: true, - mykey3: 1.5 - } - } - try{ - workScheduler.stopWork(workInfo, false); - console.info('workschedulerLog stopWork success'); - } catch (error) { - console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`); - } +let workInfo = { + workId: 1, + batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, + isRepeat: false, + isPersisted: true, + bundleName: "com.example.myapplication", + abilityName: "MyExtension", + parameters: { + mykey0: 1, + mykey1: "string value", + mykey2: true, + mykey3: 1.5 + } +} +try{ + workScheduler.startWork(workInfo); + console.info('workschedulerLog startWork success'); +} catch (error) { + console.error(`workschedulerLog startwork failed. code is ${error.code} message is ${error.message}`); +} +``` -**获取指定延迟任务** +3、取消延迟任务 -1.Callback写法 +```ts +import workScheduler from '@ohos.resourceschedule.workScheduler'; - try{ - workScheduler.getWorkStatus(50, (error, res) => { - if (error) { - console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); - } else { - for (let item in res) { - console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); - } - } - }); - } catch (error) { - console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); - } +let workInfo = { + workId: 1, + batteryStatus:workScheduler.BatteryStatus.BATTERY_STATUS_LOW, + isRepeat: false, + isPersisted: true, + bundleName: "com.example.myapplication", + abilityName: "MyExtension", + parameters: { + mykey0: 1, + mykey1: "string value", + mykey2: true, + mykey3: 1.5 + } +} +try{ + workScheduler.stopWork(workInfo, false); + console.info('workschedulerLog stopWork success'); +} catch (error) { + console.error(`workschedulerLog stopWork failed. code is ${error.code} message is ${error.message}`); +} +``` -2.Promise写法 +4、获取指定延迟任务 - try{ - workScheduler.getWorkStatus(50).then((res) => { - for (let item in res) { - console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); - } - }).catch((error) => { - console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); - }) - } catch (error) { +```ts +try{ + workScheduler.getWorkStatus(50, (error, res) => { + if (error) { console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); + } else { + for (let item in res) { + console.info(`workschedulerLog getWorkStatus success, ${item} is: ${res[item]}`); + } } + }); +} catch (error) { + console.error(`workschedulerLog getWorkStatus failed. code is ${error.code} message is ${error.message}`); +} +``` -**获取所有延迟任务** - -1.Callback写法 - - try{ - workScheduler.obtainAllWorks((error, res) =>{ - if (error) { - console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); - } else { - console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); - } - }); - } catch (error) { - console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); - } - -2.Promise写法 +5、获取所有延迟任务 - try{ - workScheduler.obtainAllWorks().then((res) => { - console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); - }).catch((error) => { - console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); - }) - } catch (error) { +```ts +try{ + workScheduler.obtainAllWorks((error, res) =>{ + if (error) { console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); + } else { + console.info(`workschedulerLog obtainAllWorks success, data is: ${JSON.stringify(res)}`); } + }); +} catch (error) { + console.error(`workschedulerLog obtainAllWorks failed. code is ${error.code} message is ${error.message}`); +} +``` -**停止并清除任务** - - try{ - workScheduler.stopAndClearWorks(); - console.info(`workschedulerLog stopAndClearWorks success`); - } catch (error) { - console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`); - } - -**判断上次执行是否超时** +6、停止并清除任务 -1.Callback写法 +```ts +try{ + workScheduler.stopAndClearWorks(); + console.info(`workschedulerLog stopAndClearWorks success`); +} catch (error) { + console.error(`workschedulerLog stopAndClearWorks failed. code is ${error.code} message is ${error.message}`); +} +``` - try{ - workScheduler.isLastWorkTimeOut(500, (error, res) =>{ - if (error) { - onsole.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); - } else { - console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); - } - }); - } catch (error) { - console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); - } +7、判断上次执行是否超时 -2.Promise写法 - - try{ - workScheduler.isLastWorkTimeOut(500) - .then(res => { - console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); - }) - .catch(error => { - console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); - }); - } catch (error) { - console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); +```ts +try{ + workScheduler.isLastWorkTimeOut(500, (error, res) =>{ + if (error) { + onsole.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); + } else { + console.info(`workschedulerLog isLastWorkTimeOut success, data is: ${res}`); } + }); +} catch (error) { + console.error(`workschedulerLog isLastWorkTimeOut failed. code is ${error.code} message is ${error.message}`); +} +``` ## 相关实例 diff --git a/zh-cn/application-dev/task-management/work-scheduler-overview.md b/zh-cn/application-dev/task-management/work-scheduler-overview.md deleted file mode 100644 index da6a08d7881862a29ac15069cabfe5c47cbe77d9..0000000000000000000000000000000000000000 --- a/zh-cn/application-dev/task-management/work-scheduler-overview.md +++ /dev/null @@ -1,34 +0,0 @@ -# 延迟任务调度概述 - -延迟任务调度给应用提供一个机制,允许应用根据系统安排,在系统空闲时执行实时性不高的任务。当满足设定条件的时候,任务会被放入待调度队列,当系统空闲时调度该任务。 - -## 使用说明 - -应用要执行对实时性要求不高的任务的时候,比如设备空闲时候做一次数据学习等场景,可以使用延迟调度任务,该机制在满足应用设定条件的时候,会根据系统当前状态,如内存、功耗、温度等统一决策调度时机。 - -## 延迟任务调度约束 - -延迟调度任务的使用需要遵从如下约束和规则: - -- **超时**:系统会设置超时机制,延迟任务回调只允许运行一段时间,超时之后,系统会主动停止。默认的超时限制为2分钟,对于系统应用,可以通过[能效资源申请接口](background-task-overview.md#能效资源申请)获取更长的执行时间(充电状态20分钟,非充电状态10分钟)。 -- **执行频率**:系统会根据应用的活跃度对延迟任务做分级管控,限制延迟任务调度的执行频率。对于通过能效资源接口申请了WORK_SCHEDULER资源的应用,在资源的有效期内,它的延迟任务执行频率不受限制。 - -应用分组 | 延迟任务执行频率约束 ---------------------|------------------------- -活跃 | 最小间隔2小时 -每日使用 | 最小间隔4小时 -经常使用 | 最小间隔24小时 -不经常使用 | 最小间隔48小时 -受限分组 | 禁止 -未使用分组 | 禁止 -[能效资源豁免分组](../reference/apis/js-apis-backgroundTaskManager.md#resourcetype9) | 执行频率不受限制 - -- **WorkInfo设置参数约束** - -(1) workId、bundleName、abilityName为必填项,bundleName必须填本应用,否则校验失败。 - -(2)至少要设置一个满足的条件。 - -(3)重复任务时间间隔至少20分钟,当设置重复任务时间间隔时,必须设置始终重复和重复次数中的一个。 - -(4)携带参数信息支持number、string、bool三种类型。 \ No newline at end of file diff --git a/zh-cn/device-dev/driver/driver-peripherals-usb-des.md b/zh-cn/device-dev/driver/driver-peripherals-usb-des.md index bdb313049f79ebdcb397c7668b35cff66ecaa9cb..c7dc8513b9e69d1dc158868e95350200c7952c6c 100644 --- a/zh-cn/device-dev/driver/driver-peripherals-usb-des.md +++ b/zh-cn/device-dev/driver/driver-peripherals-usb-des.md @@ -36,51 +36,51 @@ USB驱动模型Host侧开放的API接口功能,参考USB Host驱动模型图 | int32_t UsbInitHostSdk(struct UsbSession \*\*session); | USB主机端驱动开发工具包初始化 | | int32_t UsbExitHostSdk(const struct UsbSession
\*session); | USB主机端驱动开发工具包退出 | | const struct UsbInterface \*UsbClaimInterface(const
struct UsbSession \*session, uint8_t busNum, uint8_t
usbAddr, uint8_t interfaceIndex); | 获取USB接口对象 | -| int UsbReleaseInterface(const struct UsbInterface
\*interfaceObj); | 释放USB接口对象 | -| int UsbAddOrRemoveInterface(const struct UsbSession
\*session, uint8_t busNum, uint8_t usbAddr, uint8_t
interfaceIndex, UsbInterfaceStatus status); | 增加移除接口 | +| int32_t UsbReleaseInterface(const struct UsbInterface
\*interfaceObj); | 释放USB接口对象 | +| int32_t UsbAddOrRemoveInterface(const struct UsbSession
\*session, uint8_t busNum, uint8_t usbAddr, uint8_t
interfaceIndex, UsbInterfaceStatus status); | 增加移除接口 | | UsbInterfaceHandle \*UsbOpenInterface(const struct
UsbInterface \*interfaceObj); | 打开USB对象接口 | | int32_t UsbCloseInterface(const UsbInterfaceHandle
\*interfaceHandle); | 关闭USB接口对象 | | int32_t UsbSelectInterfaceSetting(const
UsbInterfaceHandle \*interfaceHandle, uint8_t
settingIndex, struct UsbInterface \*\*interfaceObj); | 设置可选配置 | | int32_t UsbGetPipeInfo(const UsbInterfaceHandle
\*interfaceHandle, uint8_t settingIndex, uint8_t pipeId,
struct UsbPipeInfo \*pipeInfo); | 获取指定可选设置的管道信息 | | int32_t UsbClearInterfaceHalt(const
UsbInterfaceHandle \*interfaceHandle, uint8_t
pipeAddress); | 清除指定索引的管道状态 | -| struct UsbRequest \*UsbAllocRequest(const
UsbInterfaceHandle \*interfaceHandle, int isoPackets
, int length); | 分配请求对象 | -| int UsbFreeRequest(const struct UsbRequest
\*request); | 释放请求对象 | -| int UsbSubmitRequestAsync(const struct UsbRequest
\*request); | 发送异步请求 | +| struct UsbRequest \*UsbAllocRequest(const
UsbInterfaceHandle \*interfaceHandle, int32_t isoPackets
, int32_t length); | 分配请求对象 | +| int32_t UsbFreeRequest(const struct UsbRequest
\*request); | 释放请求对象 | +| int32_t UsbSubmitRequestAsync(const struct UsbRequest
\*request); | 发送异步请求 | | int32_t UsbFillRequest(const struct UsbRequest
\*request, const UsbInterfaceHandle \*interfaceHandle,
const struct UsbRequestParams \*params); | 填充请求 | -| sint UsbCancelRequest(const struct UsbRequest
\*request); | 取消异步请求 | -| int UsbSubmitRequestSync(const struct UsbRequest
\*request); | 发送同步请求 | +| int32_t UsbCancelRequest(const struct UsbRequest
\*request); | 取消异步请求 | +| int32_t UsbSubmitRequestSync(const struct UsbRequest
\*request); | 发送同步请求 | **表2** usb_raw_api.h | 接口名称 | 功能描述 | | -------- | -------- | -| int UsbRawInit(struct UsbSession \*\*session); | USB驱动开发工具包专家模式初始化 | -| int UsbRawExit(const struct UsbSession \*session); | USB驱动开发工具包专家模式退出 | +| int32_t UsbRawInit(struct UsbSession \*\*session); | USB驱动开发工具包专家模式初始化 | +| int32_t UsbRawExit(const struct UsbSession \*session); | USB驱动开发工具包专家模式退出 | | UsbRawHandle \*UsbRawOpenDevice(const struct
UsbSession \*session, uint8_t busNum, uint8_t
usbAddr); | 打开USB设备对象 | -| int UsbRawCloseDevice(const UsbRawHandle
\*devHandle); | 关闭USB设备对象 | -| int UsbRawSendControlRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbControlRequestData
\*requestData); | 执行同步控制传输 | -| int UsbRawSendBulkRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbRequestData
\*requestData); | 执行同步批量传输 | -| int UsbRawSendInterruptRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbRequestData
\*requestData); | 执行同步中断传输 | -| int UsbRawGetConfigDescriptor(const UsbRawDevice
\*rawDev, uint8_t configIndex, struct
UsbRawConfigDescriptor \*\*config); | 获取给定设备指定ID的设备配置描述符 | +| int32_t UsbRawCloseDevice(const UsbRawHandle
\*devHandle); | 关闭USB设备对象 | +| int32_t UsbRawSendControlRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbControlRequestData
\*requestData); | 执行同步控制传输 | +| int32_t UsbRawSendBulkRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbRequestData
\*requestData); | 执行同步批量传输 | +| int32_t UsbRawSendInterruptRequest(const struct
UsbRawRequest \*request, const UsbRawHandle
\*devHandle, const struct UsbRequestData
\*requestData); | 执行同步中断传输 | +| int32_t UsbRawGetConfigDescriptor(const UsbRawDevice
\*rawDev, uint8_t configIndex, struct
UsbRawConfigDescriptor \*\*config); | 获取给定设备指定ID的设备配置描述符 | | void UsbRawFreeConfigDescriptor(const struct
UsbRawConfigDescriptor \*config); | 释放配置描述符内存空间 | -| int UsbRawGetConfiguration(const UsbRawHandle
\*devHandle, int \*config); | 获取当前激活配置 | -| int UsbRawSetConfiguration(const UsbRawHandle
\*devHandle, int config); | 设置当前激活配置 | -| int UsbRawGetDescriptor(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawDescriptorParam \*param, const unsigned char
\*data); | 获取描述符信息 | +| int32_t UsbRawGetConfiguration(const UsbRawHandle
\*devHandle, int32_t \*config); | 获取当前激活配置 | +| int32_t UsbRawSetConfiguration(const UsbRawHandle
\*devHandle, int32_t config); | 设置当前激活配置 | +| int32_t UsbRawGetDescriptor(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawDescriptorParam \*param, const unsigned char
\*data); | 获取描述符信息 | | UsbRawDevice \*UsbRawGetDevice(const UsbRawHandle
\*devHandle); | 由设备句柄获取设备指针 | -| int UsbRawGetDeviceDescriptor(const UsbRawDevice
\*rawDev, struct
UsbDeviceDescriptor \*desc); | 获取给定设备的USB设备描述符 | -| int UsbRawClaimInterface(const UsbRawHandle
\*devHandle, int
interfaceNumber); | 声明给定设备句柄上的接口 | -| int UsbRawReleaseInterface(const UsbRawHandle
\*devHandle, in
t interfaceNumber); | 释放之前声明的接口 | -| int UsbRawResetDevice(const UsbRawHandle
\*devHandle); | 复位设备 | -| struct UsbRawRequest \*UsbRawAllocRequest(const
UsbRawHandle
\*devHandle, int isoPackets, int length); | 分配一个带有指定数量的同步包描述符的传输请求 | -| int UsbRawFreeRequest(const struct UsbRawRequest
\*request); | 释放之前分配的传输请求 | -| int UsbRawFillBulkRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充批量传输请求所需信息 | -| int UsbRawFillControlSetup(const unsigned char \*setup,
const struct UsbControlRequestData \*requestData); | 填充控制传输设置包所需信息 | -| int UsbRawFillControlRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充控制传输请求所需信息 | -| int UsbRawFillInterruptRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充中断传输请求所需信息 | -| int UsbRawFillIsoRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充同步传输(Isochronous Transfers)请求所需信息 | -| int UsbRawSubmitRequest(const struct UsbRawRequest
\*request); | 提交一个传输请求 | -| int UsbRawCancelRequest(const struct UsbRawRequest
\*request); | 取消一个传输请求 | -| int UsbRawHandleRequests(const UsbRawHandle
\*devHandle); | 传输请求事件完成处理 | +| int32_t UsbRawGetDeviceDescriptor(const UsbRawDevice
\*rawDev, struct
UsbDeviceDescriptor \*desc); | 获取给定设备的USB设备描述符 | +| int32_t UsbRawClaimInterface(const UsbRawHandle
\*devHandle, int32_t
interfaceNumber); | 声明给定设备句柄上的接口 | +| int32_t UsbRawReleaseInterface(const UsbRawHandle
\*devHandle, in
t interfaceNumber); | 释放之前声明的接口 | +| int32_t UsbRawResetDevice(const UsbRawHandle
\*devHandle); | 复位设备 | +| struct UsbRawRequest \*UsbRawAllocRequest(const
UsbRawHandle
\*devHandle, int32_t isoPackets, int32_t length); | 分配一个带有指定数量的同步包描述符的传输请求 | +| int32_t UsbRawFreeRequest(const struct UsbRawRequest
\*request); | 释放之前分配的传输请求 | +| int32_t UsbRawFillBulkRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充批量传输请求所需信息 | +| int32_t UsbRawFillControlSetup(const unsigned char \*setup,
const struct UsbControlRequestData \*requestData); | 填充控制传输设置包所需信息 | +| int32_t UsbRawFillControlRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充控制传输请求所需信息 | +| int32_t UsbRawFillInterruptRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充中断传输请求所需信息 | +| int32_t UsbRawFillIsoRequest(const struct UsbRawRequest
\*request, const UsbRawHandle \*devHandle, const struct
UsbRawFillRequestData \*fillData); | 填充同步传输(Isochronous Transfers)请求所需信息 | +| int32_t UsbRawSubmitRequest(const struct UsbRawRequest
\*request); | 提交一个传输请求 | +| int32_t UsbRawCancelRequest(const struct UsbRawRequest
\*request); | 取消一个传输请求 | +| int32_t UsbRawHandleRequests(const UsbRawHandle
\*devHandle); | 传输请求事件完成处理 | USB驱动模型Device侧开放的API接口功能,参考USB Device驱动模型图。 @@ -89,19 +89,19 @@ USB驱动模型Device侧开放的API接口功能,参考USB Device驱动模型 | 接口名称 | 功能描述 | | -------- | -------- | | const struct UsbFnDevice \*UsbFnCreateDevice(const
char \*udcName, const struct UsbFnDescriptorData
\*descriptor); | 创建USB设备 | -| int UsbFnRemoveDevice(struct UsbFnDevice
\*fnDevice); | 删除USB设备 | +| int32_t UsbFnRemoveDevice(struct UsbFnDevice
\*fnDevice); | 删除USB设备 | | const struct UsbFnDevice \*UsbFnGetDevice(const char
\*udcName); | 获取USB设备 | **表4** usbfn_interface.h | 接口名称 | 功能描述 | | -------- | -------- | -| int UsbFnStartRecvInterfaceEvent(struct
UsbFnInterface \*interface, uint32_t eventMask,
UsbFnEventCallback callback, void \*context); | 开始接受Event事件 | -| int UsbFnStopRecvInterfaceEvent(struct
UsbFnInterface \*interface); | 停止接受Event事件 | +| int32_t UsbFnStartRecvInterfaceEvent(struct
UsbFnInterface \*interface, uint32_t eventMask,
UsbFnEventCallback callback, void \*context); | 开始接受Event事件 | +| int32_t UsbFnStopRecvInterfaceEvent(struct
UsbFnInterface \*interface); | 停止接受Event事件 | | UsbFnInterfaceHandle UsbFnOpenInterface(struct UsbFnInterface \*interface); | 打开一个接口 | -| int UsbFnCloseInterface(UsbFnInterfaceHandle handle); | 关闭一个接口 | -| int UsbFnGetInterfacePipeInfo(struct UsbFnInterface
\*interface, uint8_t pipeId, struct UsbFnPipeInfo \*info); | 获取管道信息 | -| int UsbFnSetInterfaceProp(const struct UsbFnInterface
\*interface, const char \*name, const char \*value); | 设置自定义属性 | +| int32_t UsbFnCloseInterface(UsbFnInterfaceHandle handle); | 关闭一个接口 | +| int32_t UsbFnGetInterfacePipeInfo(struct UsbFnInterface
\*interface, uint8_t pipeId, struct UsbFnPipeInfo \*info); | 获取管道信息 | +| int32_t UsbFnSetInterfaceProp(const struct UsbFnInterface
\*interface, const char \*name, const char \*value); | 设置自定义属性 | **表5** usbfn_request.h @@ -109,10 +109,10 @@ USB驱动模型Device侧开放的API接口功能,参考USB Device驱动模型 | -------- | -------- | | struct UsbFnRequest
\*UsbFnAllocCtrlRequest(UsbFnInterfaceHandle handle,
uint32_t len); | 申请一个控制请求 | | struct UsbFnRequest \*UsbFnAllocRequest(UsbFnInterfaceHandle handle,
uint8_t pipe, uint32_t len); | 申请一个数据请求 | -| int UsbFnFreeRequest(struct UsbFnRequest \*req); | 释放一个请求 | -| int UsbFnSubmitRequestAsync(struct UsbFnRequest
\*req); | 发送异步请求 | -| int UsbFnSubmitRequestSync(struct UsbFnRequest
\*req, uint32_t timeout); | 发送同步请求 | -| int UsbFnCancelRequest(struct UsbFnRequest \*req); | 取消请求 | +| int32_t UsbFnFreeRequest(struct UsbFnRequest \*req); | 释放一个请求 | +| int32_t UsbFnSubmitRequestAsync(struct UsbFnRequest
\*req); | 发送异步请求 | +| int32_t UsbFnSubmitRequestSync(struct UsbFnRequest
\*req, uint32_t timeout); | 发送同步请求 | +| int32_t UsbFnCancelRequest(struct UsbFnRequest \*req); | 取消请求 | ## 开发步骤 @@ -218,6 +218,9 @@ root { } } } +``` + +```cpp #include "usb_serial.h" #include "hdf_base.h" @@ -236,10 +239,10 @@ static struct UsbRequest *g_ctrlCmdRequest = NULL; static bool g_acmReleaseFlag = false; static uint8_t *g_acmReadBuffer = NULL; ... -static int SerialCtrlMsg(struct AcmDevice *acm, uint8_t request, +static int32_t SerialCtrlMsg(struct AcmDevice *acm, uint8_t request, uint16_t value, void *buf, uint16_t len) { - int ret; + int32_t ret; uint16_t index = acm->intPipe->interfaceId; struct UsbControlParams controlParams; struct UsbRequestParams params; @@ -299,7 +302,7 @@ static struct UsbPipeInfo *EnumePipe(const struct AcmDevice *acm, uint8_t interfaceIndex, UsbPipeType pipeType, UsbPipeDirection pipeDirection) { uint8_t i; - int ret; + int32_t ret; struct UsbInterfaceInfo *info = NULL; UsbInterfaceHandle *interfaceHandle = NULL; if (pipeType == USB_PIPE_TYPE_CONTROL) @@ -408,11 +411,11 @@ error: return HDF_FAILURE; } ... -static int AcmAllocReadRequests(struct AcmDevice *acm) +static int32_t AcmAllocReadRequests(struct AcmDevice *acm) { - int ret; + int32_t ret; struct UsbRequestParams readParams; - for (int i = 0; i < ACM_NR; i++) { + for (int32_t i = 0; i < ACM_NR; i++) { acm->readReq[i] = UsbAllocRequest(InterfaceIdToHandle(acm, acm->dataInPipe->interfaceId), 0, acm->readSize); // 分配待发送的readReq IO Request对象 if (!acm->readReq[i]) { HDF_LOGE("readReq request failed"); @@ -441,9 +444,9 @@ error: return HDF_ERR_MALLOC_FAIL; } -static int AcmAllocNotifyRequest(struct AcmDevice *acm) +static int32_t AcmAllocNotifyRequest(struct AcmDevice *acm) { - int ret; + int32_t ret; struct UsbRequestParams intParams = {}; acm->notifyReq = UsbAllocRequest(InterfaceIdToHandle(acm, acm->intPipe->interfaceId), 0, acm->intSize); // 分配待发送的中断IO Request对象 if (!acm->notifyReq) { @@ -474,7 +477,7 @@ error: static void AcmReleaseInterfaces(struct AcmDevice *acm) { - for (int i = 0; i < acm->interfaceCnt; i++) { + for (int32_t i = 0; i < acm->interfaceCnt; i++) { if (acm->iface[i]) { UsbReleaseInterface(acm->iface[i]); acm->iface[i] = NULL; @@ -488,7 +491,7 @@ static void AcmReleaseInterfaces(struct AcmDevice *acm) static int32_t AcmClaimInterfaces(struct AcmDevice *acm) { - for (int i = 0; i < acm->interfaceCnt; i++) { + for (int32_t i = 0; i < acm->interfaceCnt; i++) { acm->iface[i] = GetUsbInterfaceById((const struct AcmDevice *)acm, acm->interfaceIndex[i]); // 获取UsbInterface接口对象 if (acm->iface[i] == NULL) { HDF_LOGE("%s: interface%d is null", __func__, acm->interfaceIndex[i]); @@ -511,7 +514,7 @@ static int32_t AcmClaimInterfaces(struct AcmDevice *acm) static void AcmCloseInterfaces(struct AcmDevice *acm) { - for (int i = 0; i < acm->interfaceCnt; i++) { + for (int32_t i = 0; i < acm->interfaceCnt; i++) { if (acm->devHandle[i]) { UsbCloseInterface(acm->devHandle[i]); acm->devHandle[i] = NULL; @@ -525,7 +528,7 @@ static void AcmCloseInterfaces(struct AcmDevice *acm) static int32_t AcmOpenInterfaces(struct AcmDevice *acm) { - for (int i = 0; i < acm->interfaceCnt; i++) { + for (int32_t i = 0; i < acm->interfaceCnt; i++) { if (acm->iface[i]) { acm->devHandle[i] = UsbOpenInterface(acm->iface[i]); // 打开获取到的UsbInterface接口对象 if (acm->devHandle[i] == NULL) { @@ -606,7 +609,7 @@ static int32_t AcmAllocRequests(struct AcmDevice *acm) return HDF_ERR_MALLOC_FAIL; } - for (int i = 0; i < ACM_NW; i++) { + for (int32_t i = 0; i < ACM_NW; i++) { struct AcmWb *snd = &(acm->wb[i]); snd->request = UsbAllocRequest(InterfaceIdToHandle(acm, acm->dataOutPipe->interfaceId), 0, acm->writeSize); //分配待发送的IO Request对象 snd->instance = acm; @@ -789,7 +792,7 @@ HDF_INIT(g_usbSerialDriverEntry); ### Host RAW API驱动开发 -``` +```cpp root { module = "usb_pnp_device"; usb_pnp_config { @@ -836,7 +839,9 @@ root { } } } +``` +```cpp #include "usb_serial_rawapi.h" #include #include "osal_mem.h" @@ -858,11 +863,11 @@ struct OsalMutex g_stopIoLock; static bool g_rawAcmReleaseFlag = false; ...... -static int UsbGetConfigDescriptor(UsbRawHandle *devHandle, struct UsbRawConfigDescriptor **config) +static int32_t UsbGetConfigDescriptor(UsbRawHandle *devHandle, struct UsbRawConfigDescriptor **config) { UsbRawDevice *dev = NULL; - int activeConfig; - int ret; + int32_t activeConfig; + int32_t ret; if (devHandle == NULL) { HDF_LOGE("%s:%d devHandle is NULL", @@ -893,9 +898,9 @@ static int UsbGetConfigDescriptor(UsbRawHandle *devHandle, struct UsbRawConfigDe return HDF_SUCCESS; } ... -static int UsbAllocWriteRequests(struct AcmDevice *acm) +static int32_t UsbAllocWriteRequests(struct AcmDevice *acm) { - int i; + int32_t i; for (i = 0; i < ACM_NW; i++) { struct AcmWb *snd = &acm->wb[i]; @@ -965,13 +970,13 @@ error: return HDF_FAILURE; } ... -static int UsbAllocReadRequests(struct AcmDevice *acm) +static int32_t UsbAllocReadRequests(struct AcmDevice *acm) { struct UsbRawFillRequestData reqData; - int size = acm->dataInEp->maxPacketSize; - int ret; + int32_t size = acm->dataInEp->maxPacketSize; + int32_t ret; - for (int i = 0; i < ACM_NR; i++) { + for (int32_t i = 0; i < ACM_NR; i++) { acm->readReq[i] = UsbRawAllocRequest(acm->devHandle, 0, size); if (!acm->readReq[i]) { HDF_LOGE("readReq request failed"); @@ -996,11 +1001,11 @@ static int UsbAllocReadRequests(struct AcmDevice *acm) return HDF_SUCCESS; } ... -static int UsbAllocNotifyRequest(struct AcmDevice *acm) +static int32_t UsbAllocNotifyRequest(struct AcmDevice *acm) { struct UsbRawFillRequestData fillRequestData; - int size = acm->notifyEp->maxPacketSize; - int ret; + int32_t size = acm->notifyEp->maxPacketSize; + int32_t ret; acm->notifyReq = UsbRawAllocRequest(acm->devHandle, 0, size); if (!acm->notifyReq) { @@ -1226,9 +1231,8 @@ HDF_INIT(g_usbSerialRawDriverEntry); USB ACM设备核心代码路径为drivers\peripheral\usb\gadget\function\acm\cdcacm.c。其使用示例如下所示,首先根据描述符创建设备,然后获取接口,打开接口,获取Pipe信息,接收Event事件,接着进行USB通信(读写等),设备卸载时候,关闭接口,停止Event接收,删除设备。 - -``` 1、创建设备 +```cpp static int32_t AcmCreateFuncDevice(struct UsbAcmDevice *acm, struct DeviceResourceIface *iface) { @@ -1251,7 +1255,9 @@ if (useHcs == 0) { } ... } +``` 2、获取接口,打开接口,获取Pipe信息 +```cpp static int32_t AcmParseEachPipe(struct UsbAcmDevice *acm, struct UsbAcmInterface *iface) { ... @@ -1277,8 +1283,11 @@ static int32_t AcmParseEachIface(struct UsbAcmDevice *acm, struct UsbFnDevice *f } return HDF_SUCCESS; } +``` + 3、接收Event事件 -static int32_t AcmAllocCtrlRequests(struct UsbAcmDevice *acm, int num) +```cpp +static int32_t AcmAllocCtrlRequests(struct UsbAcmDevice *acm, int32_t num) { ... req = UsbFnCtrlRequestAlloc(acm->ctrlIface.handle, @@ -1292,7 +1301,9 @@ static int32_t AcmDriverInit(struct HdfDeviceObject *device) ret = UsbFnInterfaceStartRecvEvent(acm->ctrlIface.fn, 0xff, UsbAcmEventCallback, acm); ... } +``` 4、进行USB通信(读写等) +```cpp static int32_t AcmSendNotifyRequest(struct UsbAcmDevice *acm, uint8_t type, uint16_t value, void *data, uint32_t length) { @@ -1301,7 +1312,9 @@ static int32_t AcmSendNotifyRequest(struct UsbAcmDevice *acm, uint8_t type, ret = UsbFnRequestSubmitAsync(req); ... } +``` 5、关闭接口,停止Event接收,删除设备 +```cpp static int32_t AcmReleaseFuncDevice(struct UsbAcmDevice *acm) { int32_t ret; diff --git a/zh-cn/device-dev/kernel/figures/zh-cn_image-20220930141628922.png b/zh-cn/device-dev/kernel/figures/zh-cn_image-20220930141628922.png index 4a959db1206c500c0ee61e1548ffa4c94565d104..f4c4e437a0089ac5ba3371f531694daac4b36703 100644 Binary files a/zh-cn/device-dev/kernel/figures/zh-cn_image-20220930141628922.png and b/zh-cn/device-dev/kernel/figures/zh-cn_image-20220930141628922.png differ