You need to sign in or sign up before continuing.
提交 7101ba2c 编写于 作者: R RayShih

处理发布分支的changelogs

Signed-off-by: NRayShih <shirui721@huawei.com>
上级 b91cad62
# JS API差异报告
- [元能力](js-apidiff-ability.md)
- [帐号](js-apidiff-account.md)
- [应用](js-apidiff-application.md)
- [ArkUI](js-apidiff-arkui.md)
- [电源管理](js-apidiff-battery.md)
- [包管理](js-apidiff-bundle.md)
- [基础通信](js-apidiff-communication.md)
- [语言编译与运行时](js-apidiff-compiler-and-runtime.md)
- [分布式数据管理](js-apidiff-distributed-data.md)
- [文件管理](js-apidiff-file-management.md)
- [位置服务](js-apidiff-geolocation.md)
- [全球化](js-apidiff-global.md)
- [Misc软件](js-apidiff-misc.md)
- [多媒体](js-apidiff-multimedia.md)
- [事件通知](js-apidiff-notification.md)
- [资源调度](js-apidiff-resource-scheduler.md)
- [安全](js-apidiff-security.md)
- [启动](js-apidiff-start-up.md)
- [电话服务](js-apidiff-telephony.md)
- [测试](js-apidiff-unitest.md)
- [用户IAM](js-apidiff-user-iam.md)
- [Web](js-apidiff-web.md)
- [窗口](js-apidiff-window.md)
# ArkUI子系统LocalStorage类接口ChangeLog
## cl.LocalStorage.1 get接口返回类型变更
**变更影响**
返回类型从get<T>(propName: string): T变更为get<T>(propName: string): T | undefined
应用不需要进行适配。
## cl.LocalStorage.2 setOrCreate参数newValue变成必选
**变更影响**
原接口声明:
```js
setOrCreate<T>(propName: string, newValue?: T): boolean
```
现接口声明:
```js
setOrCreate<T>(propName: string, newValue: T): boolean
```
第二个参数newValue变为必选。
如果应用调用这个接口没有指定newValue参数,在替换新的sdk后会编译不过,需要手动指定newValue。
**适配指导**
```js
let storage = new LocalStorage();
storage.setOrCreate('propA', 'hello');
```
## cl.LocalStorage.3 link参数和返回类型变更
**变更影响**
原接口声明:
```js
link<T>(propName: string, linkUser?: T, subscribersName?: string): T
```
现接口声明:
```js
link<T>(propName: string): SubscribedAbstractProperty<T>
```
1. link第二三个参数为框架内部调用,不应对外开发,所以将接口变更为一个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let linA = storage.link("PropA");
linA.set(50);
```
## cl.LocalStorage.4 setAndLink参数和返回类型变更
**变更影响**
原接口声明:
```js
setAndLink<T>(propName: string, defaultValue: T, linkUser?: T, subscribersName?: string): T
```
现接口声明:
```js
setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T>
```
1. setAndLink第三四个参数为框架内部调用,不应对外开发,所以将接口变更为2个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let linA = storage.setAndLink("PropA", "48")
linA.set(50);
```
## cl.LocalStorage.5 prop参数和返回类型变更
**变更影响**
原接口声明:
```js
prop<T>(propName: string, propUser?: T, subscribersName?: string): T
```
现接口声明:
```js
prop<S>(propName: string): SubscribedAbstractProperty<S>
```
1. prop第二三个参数为框架内部调用,不应对外开发,所以将接口变更为1个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let propA = storage.prop("PropA");
propA.set(51); // one-way sync
```
## cl.LocalStorage.6 setAndProp参数和返回类型变更
**变更影响**
原接口声明:
```js
setAndProp<T>(propName: string, defaultValue: T, propUser?: T, subscribersName?: string): T
```
现接口声明:
```js
setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S>
```
1. setAndProp第三四个参数为框架内部调用,不应对外开发,所以将接口变更为2个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let propA = storage.setAndProp("PropA", "48");
propA.set(51); // one-way sync
```
\ No newline at end of file
# 包管理子系统ChangeLog
## cl.bundlemanager.1 app.json配置文件删除atomicService标签
删除配置文件app.json中atomicService标签
**变更影响**<br>
删除配置文件app.json中atomicService标签,IDE中不再支持配置该标签,使用该标签会导致IDE编译报错
**适配指导**<br>
删除atomicService标签
## cl.bundlemanager.2 app.json配置文件新增bundleType标签
配置文件app.json中新增bundleType标签
**变更影响**<br>
现存的元服务([installationFree](../../../application-dev/quick-start/module-configuration-file.md)为true),必须在app.json中指定bundleType为atomicService,否则打包失败。
**适配指导**<br>
新增[bundleType](../../../application-dev/quick-start/app-configuration-file.md)标签。该标签为可缺省(缺省值为app)。该标签需要和module.json中[installationFree](../../../application-dev/quick-start/module-configuration-file.md)字段保持一一对应,其相应规则为:
- 当bundleType为app时,installationFree必须为false。
- 当bundleType为atomicService时,installationFree必须为true。
## cl.bundlemanager.3 包管理ApplicationInfo结构体中删除split字段。
包管理[ApplicationInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)结构体中删除split字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了split的,会编译失败。
**关键的接口/组件变更**<br>
包管理[ApplicationInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)结构体中删除split字段。
**适配指导**<br>
删除ApplicationInfo结构体中的split字段。目前元服务中stage模型强制分包,不支持不分包。
## cl.bundlemanager.4 包管理HapModuleInfo结构体中删除atomicServiceModuleType字段。
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了atomicServiceModuleType的,会编译失败。
**关键的接口/组件变更**<br>
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**适配指导**<br>
删除[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的atomicServiceModuleType字段。判断atomicServiceModuleType字段的部分,用[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的moduleType代替。
## cl.bundlemanager.5 包管理删除AtomicServiceModuleType枚举值。
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了atomicServiceModuleType的,会编译失败。
**关键的接口/组件变更**<br>
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**适配指导**<br>
删除[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的atomicServiceModuleType字段。判断atomicServiceModuleType字段的部分,用[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的moduleType代替。
\ No newline at end of file
# 包管理子系统ChangeLog
## cl.bundlemanager.1 API9的ApplicationInfo结构体字段变更,新增systemApp字段,删除entryDir字段。
API9的ApplicationInfo结构体[bundleManager/applicationInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)字段变更,新增systemApp字段,删除entryDir字段。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。
**关键的接口/组件变更**<br>
ApplicationInfo结构体发生变化的字段内容如下表所示。
| 删除 | API9新增或变更 | 类型 |
| --- | --- | --- |
| 无 | systemApp | boolean |
| entryDir | 无 | string |
**适配指导**<br>
导入包管理查询的模块,在API9 version的ApplicationInfo结构体时,可以使用systemApp字段。使用了entryDir需要进行修改,该字段在HAP不解压特性中属于多余字段。
## cl.bundlemanager.2 API9的HapModuleInfo结构体字段变更,删除moduleSourceDir字段。
API9的HapModuleInfo结构体[bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)字段变更,删除moduleSourceDir字段。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。
**关键的接口/组件变更**<br>
HapModuleInfo结构体发生变化的字段内容如下表所示。
| 删除 | API9新增或变更 | 类型 |
| --- | --- | --- |
| moduleSourceDir | 无 | string |
**适配指导**<br>
导入包管理查询的模块,在API9 version的HapModuleInfo结构体时不能使用moduleSourceDir字段。使用了moduleSourceDir需要进行修改,该字段在HAP不解压特性中属于多余字段。
# 包管理子系统ChangeLog
## cl.bundlemanager.1 包管理分布式查询模块名称变更,由ohos.bundle.distributedBundle变更为ohos.bundle.distributedBundleManager,接口未发生变更。
API9的包管理分布式查询模块名称变更,由ohos.bundle.distributedBundle变更为[ohos.bundle.distributedBundleManager](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.distributedBundleManager.d.ts),接口未发生变更。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块。
**关键的接口/组件变更**<br>
包管理分布式查询模块名称由ohos.bundle.distributedBundle修改为ohos.bundle.distributedBundleManager,接口未发生变更。
**适配指导**<br>
原有导入模块@ohos.bundle.distributedBundle代码需要修改为@ohos.bundle.distributedBundleManager。
```ts
import distributedBundle form '@ohos.bundle.distributedBundleManager';
```
# 包管理子系统ChangeLog
## cl.bundlemanager.1 底层能力变更,安装应用时增加签名证书中bundle-name的校验,需要与应用的bundleName相同,否则会安装失败。
安装应用时增加了对[签名证书profile文件](../../../application-dev/security/app-provision-structure.md)中bundle-name字段的校验,该字段内容需要配置为对应应用的bundleName。
如果bundle-name的内容与应用配置文件中的bundleName不一致,会出现安装失败。具体报错为:
```
error: verify signature failed.
```
**变更影响**<br>
对之前的版本镜像无影响,对使用3.2.10.5版本及之后的系统镜像,如果未修改签名证书中的bundle-name字段,会出现应用安装失败问题。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
原有应用在新的系统镜像上出现'error: verify signature failed',可以修改签名证书profile文件中的bundle-name为对应应用的bundleName,生成新的签名证书(后缀为.p7b),重新给应用签名即可。
签名工具及签名证书的生成方式可以参考:[签名工具指导](../../../application-dev/security/hapsigntool-guidelines.md)
## cl.bundlemanager.2 底层能力变更,增加对无图标应用的管控,如果应用未配置入口图标,则会在桌面上显示一个默认图标,点击后跳转至应用详情页。
增加对无图标应用的管控,如果应用未配置入口图标且未申请隐藏图标特权(AllowHideDesktopIcon),则会在桌面上显示一个默认图标,点击后跳转至应用详情页。此处的未配置入口图标规则如下:
1. 应用中未配置abilities字段
2. 应用中配置了abilities字段,但是没有任何一个page类型的ability中skills如下,即同时包含"ohos.want.action.home"和"entity.system.home":
```json
"skills": [
{
"actions": [
"ohos.want.action.home"
],
"entities": [
"entity.system.home"
]
}
]
```
对于符合上面规则的应用,均属于无图标应用,通过hdc_std install 或者 bm install的方式安装,均会在桌面上显示一个默认图标。
如果应用不需要再桌面显示图标,需要申请相应的隐藏图标特权AllowHideDesktopIcon,并在签名证书文件中或者白名单(install_list_capability.json)配置,可以参考:[应用特权配置指南](../../../device-dev/subsystems/subsys-app-privilege-config-guide.md)
如果应该需要在桌面显示图标,则需要在abilities中选择一个ability配置skills,同时包含"ohos.want.action.home"和"entity.system.home"。
**变更影响**<br>
对之前的版本镜像无影响,对使用3.2.10.5版本及之后的系统镜像,如果应用未配置图标,通过命令行的安装方式会在桌面显示默认图标。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
如果应用不需要再桌面显示图标,需要申请相应的隐藏图标特权AllowHideDesktopIcon,并在签名证书文件中或者白名单(install_list_capability.json)配置,可以参考:[应用特权配置指南](../../../device-dev/subsystems/subsys-app-privilege-config-guide.md)
如果应该需要在桌面显示图标,则需要在abilities中选择一个ability配置skills,同时包含"ohos.want.action.home"和"entity.system.home"。
## cl.bundlemanager.3 底层能力变更,特权AllowAppUsePrivilegeExtension、AllowAppMultiProcess和AllowFormVisibleNotify不支持通过签名证书配置,仅支持通过白名单install_list_capability.json申请这三个特权。
特权AllowAppUsePrivilegeExtension、AllowAppMultiProcess和AllowFormVisibleNotify不支持通过签名证书配置,仅支持通过白名单install_list_capability.json申请这三个特权。对于在签名证书中申请使用上面三个特权的应用,在新版本上可能出现安装失败或者配置特权无效的问题。
如果出现了下面的报错,可能是因为特权整改导致的,应用需要适配新的规则,可以参考:[应用特权配置指南](../../../device-dev/subsystems/subsys-app-privilege-config-guide.md)
```
error: install parse profile prop check error.
```
对于xts或者本地调试的demo,无法修改板子上install_list_capability.json的,可以修改应用的bundleName,需要以"com.acts."为开头,同时在签名证书中申请对应的特权。
申请特权AllowAppUsePrivilegeExtension,通常是在应用的配置文件中使用了extensionAbilities字段,且其中的type属性为dataShare或者service。如果未配置特权,就会出现安装失败问题。
**变更影响**<br>
对之前的版本镜像无影响,对使用3.2.10.5版本及之后的系统镜像,如果未在白名单install_list_capability.json中申请所需的特权,可能会出现应用安装失败问题。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
如果出现了下面的报错,可能是因为特权整改导致的,应用需要适配新的规则,可以参考:[应用特权配置指南](../../../device-dev/subsystems/subsys-app-privilege-config-guide.md)
```
error: install parse profile prop check error.
```
对于xts或者本地调试的demo,无法修改开发板上install_list_capability.json的,可以修改应用的bundleName,需要以"com.acts."为开头,同时在签名证书中申请对应的特权。
## cl.bundlemanager.4 底层能力变更,安装hap时,hap中的文件不再解压到安装目录。
安装hap后,安装目录下只会存在hap文件,应用不能再使用拼接路径访问解压后的资源文件,应用想要访问资源文件,需要使用标准的资源管理接口。
**变更影响**<br>
如果应用使用拼接路径的形式访问资源文件,会访问失败。需要修改成使用资源管理接口访问资源文件。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
资源管理子系统提供Js接口访问资源文件。参考[访问资源文件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-resource-manager.md#getrawfilecontent9)
# 元能力子系统ChangeLog
## cl.ability.1 appRecovery接口中RestartFlag属性名称变更,删除了未支持的属性
appRecovery接口中RestartFlag枚举命名从特定故障发生后**不重启**改成了特定故障发生后**重启**
删除了CPP_CRASH_NO_RESTART。
**变更影响**
3.2.10.6版本之前使用CPP_CRASH_NO_RESTART/JS_CRASH_NO_RESTART/APP_FREEZE_NO_RESTART类型开发的应用,在3.2.10.6版本之后行为会发生变化。
**关键接口/组件变更**
**RestartFlag** <sup>9+</sup>
变更前:
| 名称 | 值 | 说明 |
| ----------------------------- | ---- | ------------------------------------------------------------ |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | 0x0001 | 发生CPP_CRASH时**不重启**应用。 |
| JS_CRASH_NO_RESTART | 0x0002 | 发生JS_CRASH时**不重启**应用。 |
| APP_FREEZE_NO_RESTART | 0x0004 | 发生APP_FREEZE时**不重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
变更后:
| 名称 | 值 | 说明 |
| ---------- | ---- | ---------- |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | NA | **删除**,不支持该场景的重启。 |
| RESTART_WHEN_JS_CRASH | 0x0001 | 发生JS_CRASH时**重启**应用。 |
| RESTART_WHEN_APP_FREEZE | 0x0002 | 发生APP_FREEZE时**重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
**适配指导**
按新的语义进行适配。
\ No newline at end of file
# 元能力子系统ChangeLog
OpenHarmony 3.2.12.2版本相较于OpenHarmony3.2release版本,元能力子系统的API新增了更为详细的返回错误码信息,便于开发者更加有效地使用相关API接口。
## cl.ability.1 API错误码新增及优化描述
相较之前版本,对于接口的错误码描述及接口可能返回的所有错误码均进行了注释说明,开发者可以通过相关错误码进行更为准确的错误流程控制。
**变更影响**
影响API9版本的JS接口对外声明,对实际功能无影响,开发者可选择是否适配。
**关键的接口/组件变更**
本次变更主要涉及如下模块的注释更新,详细请参考对应的对外接口声明及API开发指导文档:
| 模块 | 主要变更点说明 |
| ----------------------------------- | ------------------------------------------------------------ |
| @ohos.app.ability.UIAbility | 增加16200001、16200002、16200004、16200005、16000050等错误码返回说明 |
| @ohos.app.ability.abilityManager | 增加201、202、16000050等错误码返回说明,调整401等错误码返回说明 |
| @ohos.app.ability.appManager | 增加201、202、16000050等错误码返回说明,调整401等错误码返回说明 |
| @ohos.app.ability.dataUriUtils | 增加401等错误码返回说明 |
| @ohos.app.ability.errorManager | 增加16000003等错误码返回说明 |
| @ohos.app.ability.missionManager | 增加201、202、16300001、16300002、16000009等错误码返回说明,调整401等错误码返回说明 |
| @ohos.app.ability.quickFixManager | 增加201、202、18500001、18500002、18500008等错误码返回说明 |
| @ohos.app.ability.wantAgent | 增加16000007、16000015、16000151等错误码返回说明 |
| application/AbilityDelegator | 增加16000001、16000002、16000004、16000005、16000006、16000008、16000009、16000010、16000011、16000050、16000053、16000055、16200001、16000100等错误码返回说明 |
| application/ApplicationContext | 增加16000011、16000050等错误码返回说明 |
| application/Context | 增加201、202、401等错误码返回说明 |
| application/ServiceExtensionContext | 增加201、202、16000001、16000002、16000004、16000005、16000006、16000008、16000009、16000010、16000011、16000050、16000053、16000055、16200001等错误码返回说明 |
| application/UIAbilityContext | 增加201、16000001、16000002、16000004、16000005、16000006、16000008、16000009、16000010、16000011、16000050、16000053、16000055、16200001、16000100等错误码返回说明 |
| @ohos.app.form.formHost | 增加201、202、16500050、16500060、16501000、16501001、16501003等错误码返回说明,调整401等错误码返回说明 |
| @ohos.app.form.formProvider | 增加202、16500050、16500060、16500100、16501000、16501001、16501002、16501003,调整401等错误码返回说明 |
| application/FormExtensionContext | 增加202、401、16500050、16500100、16500101、16501000等错误码返回说明 |
# 时间通知子系统ChangeLog
OpenHarmony 3.2.12.2版本相较于OpenHarmony3.2release版本,事件通知子系统的API新增了更为详细的返回错误码信息,便于开发者更加有效地使用相关API接口。
## cl.notification.1 API错误码新增及优化描述
相较之前版本,对于接口的错误码描述及接口可能返回的所有错误码均进行了注释说明,开发者可以通过相关错误码进行更为准确的错误流程控制。
**变更影响**
影响API9版本的JS接口对外声明,对实际功能无影响,开发者可选择是否适配。
**关键的接口/组件变更**
本次变更主要涉及如下模块的注释更新,详细请参考对应的对外接口声明及API开发指导文档:
| 模块 | 主要变更点说明 |
| --------------------------- | ------------------------------------------------------------ |
| @ohos.commonEventManager | 增加801、1500007、1500008等错误码返回说明 |
| @ohos.notificationManager | 增加201、202、1600001、1600002、1600003、1600004、1600005、1600007、1600008、1600009、1600010、17700001等错误码返回说明,调整401等错误码返回说明 |
| @ohos.notificationSubscribe | 增加201、202、1600001、1600002、1600003、1600007、1600008、17700001等错误码返回说明,调整401等错误码返回说明 |
# 包管理子系统ChangeLog
## cl.bundlemanager.1 包管理API异常处理方式变更,原有API8及之前的接口全部废弃,需要使用新的API9接口
包管理接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。对原有接口进行整改,原有API8及之前的接口全部废弃,需要使用新的API9接口。
**变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更**
新增接口按照模块进行了划分,将原有的的d.ts分成多个d.ts,可以根据业务需要导入不同的d.ts。新增接口支持统一的错误码异常处理规范,功能上与原接口保持一致。部分功能有变更或者新增的接口会单独列出。
为适配统一的API异常处理方式,对包管理API8及之前的接口进行废弃(下表中**原接口**列内容),并新增对应API9接口(下表中**新接口**列内容)。
| 原接口(废弃) | 新接口(新增) |
| ------ | ------ |
| @ohos.bundle.d.ts | [@ohos.bundle.bundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleManager.d.ts) |
| @ohos.bundle.d.ts | [@ohos.bundle.freeInstall.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.freeInstall.d.ts) |
| @ohos.bundle.d.ts | [@ohos.bundle.installer.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.installer.d.ts) |
| @ohos.bundle.innerBundleManager.d.ts | [@ohos.bundle.launcherBundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.launcherBundleManager.d.ts) |
| @ohos.bundle.innerBundleManager.d.ts | [@ohos.bundle.bundleMonitor.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleMonitor.d.ts) |
| @ohos.bundle.defaultAppManager.d.ts | [@ohos.bundle.defaultAppManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.defaultAppManager.d.ts) |
| @ohos.distributedBundle.d.ts | [@ohos.bundle.distributedBundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.distributedBundleManager.d.ts) |
| 无 | [@ohos.bundle.appControl.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.appControl.d.ts) |
| @system.package.d.ts | 无 |
**适配指导**<br>
1. 调用包管理查询相关接口。
```
import bundle form '@ohos.bundle.bundleManager'
```
2. 调用包管理安装卸载相关接口
```
import installer form '@ohos.bundle.installer'
```
3. 调用包管理免安装相关接口
```
import freeInstall form '@ohos.bundle.freeInstall'
```
4. 调用包管理launcher相关接口
```
import launcherBundleManager form '@ohos.bundle.launcherBundleManager'
import bundleMonitor form '@ohos.bundle.bundleMonitor'
```
6. 调用包管理默认应用相关接口
```
import defaultAppManager form '@ohos.bundle.defaultAppManager'
```
7. 调用包管理分布式相关接口
```
import distributedBundle form '@ohos.bundle.distributedBundle'
```
此外还需要适配异常处理,具体参考新接口的接口文档。
## cl.bundlemanager.2 包管理API结构体变更,原有API8及之前的结构体全部废弃,需要使用新的API9结构体
包管理接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。原有API8及之前的结构体全部废弃,需要使用新的API9结构体。
**变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配变更结构体,否则会影响原有业务逻辑。原有二级模块的导出功能也会废弃,需要使用新接口的二级模块到处能力,需要导入新的一级d.ts模块。
**关键接口/组件变更**
新增结构体对原有的API8及之前的结构体进行梳理,将原有API8及之前的结构体全部废弃,新增新的API9结构体,变更前后的对比如下表所示,部分结构体进行了合并,例如moduleInfo.d.ts替换为hapModuleInfo.d.ts,customizeData.d.ts替换为metadata.d.ts。结构体功能上与原结构体保持一致。部分功能有变更或者新增的结构体属性会单独列出。
| 原结构体(废弃) | 新结构体(新增) |
| ------ | ------ |
| bundle/abilityInfo.d.ts | [bundleManager/abilityInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/AbilityInfo.d.ts) |
| bundle/applicationInfo.d.ts | [bundleManager/applicationInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts) |
| bundle/bundleInfo.d.ts | [bundleManager/bundleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/BundleInfo.d.ts) |
| bundle/bundleInstaller.d.ts | [@ohos.bundle.installer.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.installer.d.ts) |
| bundle/bundleStatusCallback.d.ts | [@ohos.bundle.bundleMonitor.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleMonitor.d.ts) |
| bundle/customizeData.d.ts | [bundleManager/metadata.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/Metadata.d.ts) |
| bundle/dispatchInfo.d.ts | [bundleManager/dispatchInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/DispatchInfo.d.ts) |
| bundle/elementName.d.ts | [bundleManager/elementName.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ElementName.d.ts) |
| bundle/extensionAbilityInfo.d.ts | [bundleManager/extensionAbilityInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ExtensionAbilityInfo.d.ts) |
| bundle/hapModuleInfo.d.ts | [bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts) |
| bundle/launcherAbilityInfo.d.ts | [bundleManager/launcherAbilityInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/LauncherAbilityInfo.d.ts) |
| bundle/metadata.d.ts | [bundleManager/metadata.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/Metadata.d.ts) |
| bundle/moduleInfo.d.ts | [bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts) |
| bundle/PermissionDef.d.ts | [bundleManager/permissionDef.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/PermissionDef.d.ts) |
| bundle/remoteAbilityInfo.d.ts | [bundleManager/remoteAbilityInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/RemoteAbilityInfo.d.ts) |
| bundle/shortcutInfo.d.ts | [bundleManager/shortcutInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ShortcutInfo.d.ts) |
**适配指导**<br>
1. 使用原有结构体的代码需要修改为新结构体。
2. 原有二级模块的导出功能也会废弃,可以使用新接口的二级模块到处能力,需要导入新的一级d.ts模块。
## cl.bundlemanager.3 包管理查询模块接口变更,@ohos.bundle.d.ts中接口全部废弃,新增@ohos.bundle.bundleManager.d.ts、@ohos.bundle.freeInstall.d.ts和@ohos.bundle.installer.d.ts模块,将原有接口新增或者变更至新d.ts中
包管理模块查询接口变更,废弃了@ohos.bundle中API8及之前的全部接口,其中的API9接口变更至@ohos.bundle.bundleManager、@ohos.bundle.freeInstall和@ohos.bundle.installer中,@ohos.bundle.bundleManager中新增了之前废弃的大部分接口,修改为systemapi,并增加了异常处理能力。
使用方式的变化:由原来的@ohos.bundle修改为@ohos.bundle.bundleManager、@ohos.bundle.freeInstall和@ohos.bundle.installer模块来使用相关的接口。
@ohos.bundle.bundleManager和@ohos.bundle.installer模块系统能力为SystemCapability.BundleManager.BundleFramework.Core,@ohos.bundle.freeInstall模块系统能力为SystemCapability.BundleManager.BundleFramework.FreeInstall。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。在@ohos.bundle原有的API9接口,变更到新的@ohos.bundle.bundleManager.d.ts、@ohos.bundle.freeInstall和@ohos.bundle.installer文件中。
**关键的接口/组件变更**<br>
@ohos.bundle.d.ts中涉及到的废弃和变更接口如下表所示。未在表格中列出的表明除了增加异常处理和变更导入模块外,接口名称和入参均未发生变化,直接导入新的@ohos.bundle.bundleManager.d.ts、@ohos.bundle.freeInstall和@ohos.bundle.installer就可使用。在表格中列出的均表示在API9接口上发生变更,标记为无的表示在API9上已废弃。
| 原接口(废弃) | 新接口(变更或新增)| systemapi|新文件名|
| ---| ---| --- | --|
| BundleFlag | BundleFlag | 否 | @ohos.bundle.bundleManager.d.ts |
| 无 | ApplicationFlag | 是 | @ohos.bundle.bundleManager.d.ts |
| 无 | AbilityFlag | 是 | @ohos.bundle.bundleManager.d.ts |
| ExtensionFlag | ExtensionAbilityFlag | 是 | @ohos.bundle.bundleManager.d.ts |
| ColorMode | 无 | 否 | 无 |
| GrantStatus | PermissionGrantState | 否 | @ohos.bundle.bundleManager.d.ts |
| AbilityType | AbilityType | 否 | @ohos.bundle.bundleManager.d.ts |
| AbilitySubType | 无 | 否 | 无 |
| DisplayOrientation | DisplayOrientation | 否 | @ohos.bundle.bundleManager.d.ts |
| LaunchMode | LaunchType | 否 | @ohos.bundle.bundleManager.d.ts |
| ExtensionAbilityType | ExtensionAbilityType | 是 | @ohos.bundle.bundleManager.d.ts |
| BundleOptions | 无 | 否 | 无 |
| InstallErrorCode | 无 | 否 | 无 |
| UpgradeFlag | UpgradeFlag | 是 | @ohos.bundle.freeInstall.d.ts |
| SupportWindowMode | SupportWindowMode | 否 | @ohos.bundle.bundleManager.d.ts |
| getBundleInfo | getBundleInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getBundleInstaller | getBundleInstaller | 是 | @ohos.bundle.installer.d.ts |
| getAbilityInfo | queryAbilityInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getApplicationInfo | getApplicationInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| queryAbilityByWant | queryAbilityInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getAllBundleInfo | getAllBundleInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getAllApplicationInfo | getAllApplicationInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getNameForUid | getBundleNameByUid | 是 | @ohos.bundle.bundleManager.d.ts |
| getBundleArchiveInfo |getBundleArchiveInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getLaunchWantForBundle | getLaunchWantForBundle | 是 | @ohos.bundle.bundleManager.d.ts |
| cleanBundleCacheFiles | cleanBundleCacheFiles | 是 | @ohos.bundle.bundleManager.d.ts |
| setApplicationEnabled | setApplicationEnabled | 是 | @ohos.bundle.bundleManager.d.ts |
| setAbilityEnabled | setAbilityEnabled | 是 | @ohos.bundle.bundleManager.d.ts |
| queryExtensionAbilityInfos | queryExtensionAbilityInfo | 是 | @ohos.bundle.bundleManager.d.ts |
| getPermissionDef | getPermissionDef | 是 | @ohos.bundle.bundleManager.d.ts |
| getAbilityLabel | getAbilityLabel | 是 | @ohos.bundle.bundleManager.d.ts |
| getAbilityIcon | getAbilityIcon | 是 | @ohos.bundle.bundleManager.d.ts |
| isAbilityEnabled | isAbilityEnabled | 是 | @ohos.bundle.bundleManager.d.ts |
| isApplicationEnabled | isApplicationEnabled | 是 | @ohos.bundle.bundleManager.d.ts |
| setModuleUpgradeFlag | setHapModuleUpgradeFlag | 是 | @ohos.bundle.freeInstall.d.ts |
| isModuleRemovable | isHapModuleRemovable | 是 | @ohos.bundle.freeInstall.d.ts |
| getBundlePackInfo | getBundlePackInfo | 是 | @ohos.bundle.freeInstall.d.ts |
| getDispatcherVersion | getDispatchInfo | 是 | @ohos.bundle.freeInstall.d.ts |
| getProfileByAbility | getProfileByAbility | 否 | @ohos.bundle.bundleManager.d.ts |
| getProfileByExtensionAbility | getProfileByExtensionAbility | 否 | @ohos.bundle.bundleManager.d.ts |
| setDisposedStatus | setDisposedStatus | 是 | @ohos.bundle.appControl.d.ts |
| getDisposedStatus | getDisposedStatus | 是 | @ohos.bundle.appControl.d.ts |
| 无 | deleteDisposedStatus | 是 | @ohos.bundle.appControl.d.ts |
| getBundleInfoSync | getBundleInfoSync | 是 | @ohos.bundle.bundleManager.d.ts |
| getApplicationInfoSync | getApplicationInfoSync | 是 | @ohos.bundle.bundleManager.d.ts |
|无| getBundleInfoForSelf | 否 | @ohos.bundle.bundleManager.d.ts |
**适配指导**<br>
将原接口替换为API9新增的接口,导入相关的模块。
旧的导入模块:
```
import bundle form '@ohos.bundle'
```
新的导入模块:
```
import bundle form '@ohos.bundle.bundleManager'
import freeInstall form '@ohos.bundle.freeInstall'
import installer form '@ohos.bundle.installer'
import appControl form '@ohos.bundle.appControl'
```
## cl.bundlemanager.4 BundleInfo结构体变更,包管理原有bundle/bundleInfo.d.ts字段全部废弃变更为bundleManager/bundleInfo.d.ts,涉及字段属性变化。
包管理原有bundle/bundleInfo.d.ts字段全部废弃。由老的[bundle/bundleInfo.d.ts]((https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundle/bundleInfo.d.ts))变更为[bundleManager/bundleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/BundleInfo.d.ts),涉及字段属性变化。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。使用二级模块导出BundleInfo时,需要导入@ohos.bundle.bundleManager模块。
**关键的接口/组件变更**<br>
BundleInfo结构体发生变化的字段内容如下表所示。其余字段在bundle/bundleInfo.d.ts中废弃后,在新的[bundleManager/bundleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/BundleInfo.d.ts)中均有对应值。没有对应字段,则表明该字段已经在API9上废弃。
| 已废弃 | API9新增或变更 | 类型 |
| --- | --- | --- |
| type | 无 | string |
| appId | 无 | string |
| 无 |signatureInfo | SignatureInfo |
| uid | 无 | number | 无|
| abilityInfos | 无 | Array\<AbilityInfo> |
| reqPermissions | 无 | Array<string> |
| compatibleVersion | 无 | number |
| isCompressNativeLibs | 无 | boolean |
| entryModuleName | 无 | string |
| cpuAbi | 无 | string |
| isSilentInstallation | 无 | string |
| entryInstallationFree | 无 | boolean |
| reqPermissionStates | permissionGrantStates | Array\<bundleManager.PermissionGrantState> |
| extensionAbilityInfo | 无 |Array\<ExtensionAbilityInfo>|
| hapModuleInfos | hapModulesInfo | Array\<HapModuleInfo> |
API9中新增SignatureInfo结构体,该结构体如下:
| 属性名 | 类型 |
| ----------- | ------ |
| appId | string |
| fingerprint | string |
**适配指导**<br>
导入包管理查询的模块,使用API9 version的BundleInfo结构体,使用二级模块导出时也需要引入下面模块。
```
import bundle form '@ohos.bundle.bundleManager'
```
## cl.bundlemanager.5 ApplicationInfo结构体变更,包管理原有bundle/applicationInfo.d.ts字段全部废弃,变更为bundleManager/applicationInfo.d.ts,涉及字段属性变化。
ApplicationInfo结构体变更,包管理原有bundle/applicationInfo.d.ts字段全部废弃,变更为bundleManager/applicationInfo.d.ts,涉及字段属性变化。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。使用二级模块导出ApplicationInfo时,需要导入@ohos.bundle.bundleManager模块。
**关键的接口/组件变更**<br>
ApplicationInfo结构体发生变化的字段内容如下表所示。其余字段在bundle/applicationInfo.d.ts中废弃后,在新的[bundleManager/applicationInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)中均有对应值。没有对应字段,则表明该字段已经在API9上废弃。
| 废弃 | API9新增或变更 | 类型 |
| --- | --- | --- |
| systemApp | 无 | boolean |
| labelId | 无 | string |
| labelIndex | labelId | number |
| iconId | 无 | string |
| iconIndex | iconId | number |
| supportedModes | 无 | number |
| moduleSourceDirs | 无 | Array\<string> |
| moduleInfos | 无 | Array\<ModuleInfo> |
| metaData | 无 | Map\<string,Array\<CustomizeData>> |
| entityType | 无 | string |
| fingerprint | 无 | string |
**适配指导**<br>
导入包管理查询的模块,使用API9 version的ApplicationInfo结构体。
## cl.bundlemanager.6 HapModuleInfo结构体字段变更,包管理原有bundle/hapModuleInfo.d.ts 和 moduleInfo.d.ts字段全部废弃,变更为bundleManager/hapModuleInfo.d.ts,涉及字段属性变化。
HapModuleInfo结构体字段变更,包管理原有bundle/hapModuleInfo.d.ts 和 moduleInfo.d.ts字段全部废弃,变更为[bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts),涉及字段属性变化。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。使用二级模块导出HapModuleInfo时,需要导入@ohos.bundle.bundleManager模块。
**关键的接口/组件变更**<br>
HapModuleInfo结构体发生变化的字段内容如下表所示。其余字段在bundle/hapModuleInfo.d.ts中废弃后,在新的bundleManager/hapModuleInfo.d.ts中均有对应值。
| 废弃 | API9新增或变更 | 类型 |
| --- | --- | --- |
| abilityInfo | abilitiesInfo | Array<AbilityInfo> |
| 无 | moduleSourceDir | string |
| backgroundImg | 无 | string |
| supportedModes | 无 | string |
| reqCapabilities | 无 | Array\<string> |
| moduleName | 无 | string |
| mainAbilityName | 无 | string |
| extensionAbilityInfo | extensionAbilitiesInfo | Array\<ExtensionAbilityInfo> |
**适配指导**<br>
导入包管理查询的模块,使用API9 version的HapModuleInfo结构体。
## cl.bundlemanager.7 ModuleInfo结构体废弃,使用bundleManager/hapModuleInfo.d.ts中的HapModuleInfo代替。
包管理原有bundle/hapModuleInfo.d.ts 和 moduleInfo.d.ts字段全部废弃,变更为[bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts),涉及字段属性变化。
ModuleInfo结构体废弃,使用[bundleManager/hapModuleInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)中的HapModuleInfo代替。
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。ModuleInfo被废弃,使用HapModuleInfo代替。
**关键的接口/组件变更**<br>
ModuleInfo结构体被废弃,使用HapModuleInfo代替。
**适配指导**<br>
使用API9 version的HapModuleInfo结构体。
## cl.bundlemanager.8 AbilityInfo结构体字段变更,原bundle/abilityInfo.d.ts全部废弃,变更为bundleManager/abilityInfo.d.ts,涉及到字段属性变化
AbilityInfo结构体字段变更,原bundle/abilityInfo.d.ts全部废弃,变更为bundleManager/abilityInfo.d.ts,涉及到字段属性变化
**变更影响**<br>
对原有使用API version 9之前的应用无影响,使用API version 9的应用需要适配新模块和新接口。
**关键的接口/组件变更**<br>
包管理AbilityInfo结构体字段变更如下表所示,未在表格中列出的表明废弃后均在新的AbilityInfo中存在,标记为无的表明该字段已在API9废弃,在新的AbilityInfo中不存在。
|废弃 | API9新增或变更 | 类型|
|----| --| --|
| launchMode | launchType | number |
| supportWindowMode | supportWindowModes | Array\<number> |
| targetAbility | 无 | string |
| backgroundModes | 无 | number |
| formEnabled | 无 | boolean |
| subType | 无 | AbilitySubType |
|deviceCapabilities |无| Array\<string>|
| metaData | 无 | Array\<CustomizeData>|
| maxWindowRatio | 无 | number |
| minWindowRatio | 无 | number |
| maxWindowWidth | 无 | number |
| minWindowWidth | 无 | number |
| maxWindowHeight | 无 | number |
| minWindowHeight | 无 | number |
| 无| windowSize | WindowSize |
其中API9新增结构体WindowSize属性如下:
| 属性名 | 类型 |
| :-------------: | :----: |
| maxWindowRatio | number |
| minWindowRatio | number |
| maxWindowWidth | number |
| minWindowWidth | number |
| maxWindowHeight | number |
| minWindowHeight | number |
**适配指导**<br>
使用API9 version的AbilityInfo结构体。
## cl.bundlemanager.9 BundleFlag变更,变更为@ohos.bundle.bundleManager中的BundleFlag、ApplicationFlag和AbilityFlag,涉及到接口入参修改。
BundleFlag变更,变更为@ohos.bundle.bundleManager中的BundleFlag、ApplicationFlag和AbilityFlag,根据新接口的入参,传入不同类型的flag。
**变更影响**<br>
BundleFlag变更,变更为@ohos.bundle.bundleManager中的BundleFlag、ApplicationFlag和AbilityFlag,根据新接口的入参描述,传入不同类型的flag。直接使用API Version 9之前的BundleFlag,可能查询失败。
**关键的接口/组件变更**<br>
原@ohos.bundle中的BundleFlag全部废弃,使用新的@ohos.bundle.bundleManager中的BundleFlag、ApplicationFlag和AbilityFlag代替。
API9的BundleFlag 如下表所示:
| BundleFlag |值 |描述|
|---|---| --|
|GET_BUNDLE_INFO_DEFAULT|0x00000000|获取默认BundleInfo,获取到的BundleInfo不包含signatureInfo, hapModuleInfo, appInfo, reqPermissionDetails和permissionGrantStates|
|GET_BUNDLE_INFO_WITH_APPLICATION| 0x00000001|额外获取appInfos|
|GET_BUNDLE_INFO_WITH_HAP_MODULE|0x00000002|额外获取hapModulesInfo|
|GET_BUNDLE_INFO_WITH_ABILITY|0x00000004|指定在获取hapModulesInfo的信息中是否包含abilitiesInfo,需要和GET_BUNDLE_INFO_WITH_HAP_MODULE一起使用,不能单独使用。|
|GET_BUNDLE_INFO_WITH_EXTENSION_ABILITY|0x00000008|指定在获取hapModulesInfo的信息中是否包含extensionAbilitiesInfo,需要和GET_BUNDLE_INFO_WITH_HAP_MODULE一起使用,不能单独使用。|
|GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION|0x00000010|额外获取reqPermissionDetails和permissionGrantStates|
|GET_BUNDLE_INFO_WITH_METADATA|0x00000020|控制返回的ApplicationInfo, AbilityInfo和ExtensionAbilityInfo中是否包含metadata信息,不能单独使用|
|GET_BUNDLE_INFO_WITH_DISABLE|0x00000040|可获取被禁用application的BundleInfo和获取abilitiesInfo中disabled ability信息|
|GET_BUNDLE_INFO_WITH_SIGNATURE_INFO|0x00000080|额外获取signatureInfo|
API9的 ApplicationFlag 如下表所示
| ApplicationFlag |值 |描述|
|---|---| --|
|GET_APPLICATION_INFO_DEFAULT|0x00000000|获取默认ApplicationInfo,获取的ApplicationInfo不包含permissions和matedata|
|GET_APPLICATION_INFO_WITH_PERMISSION|0x00000001|额外获取permissions|
|GET_APPLICATION_INFO_WITH_METADATA|0x00000002|额外获取metadata|
|GET_APPLICATION_INFO_WITH_DISABLE|0x00000004|获取disabled的application信息|
API9的 AbilityFlag 如下表所示:
| AbilityFlag |值 |描述|
|---|---|---|
|GET_ABILITY_INFO_DEFAULT| 0x00000000|用于获取默认的AbilityInfo信息,不包含permission、metadata和 disabled 的 AbilityInfo|
|GET_ABILITY_INFO_WITH_PERMISSION | 0x00000001|用于获取带有permission信息的AbilityInfo|
|GET_ABILITY_INFO_WITH_APPLICATION | 0x00000002|用于获取带有ApplicationInfo结构体信息的AbilityInfo|
| GET_ABILITY_INFO_WITH_METADATA | 0x00000004|用于获取带有metadata信息的AbilityInfo|
|GET_ABILITY_INFO_WITH_DISABLE | 0x00000008|用于获取所有的AbilityInfo,包含被禁用的Ability|
|GET_ABILITY_INFO_ONLY_SYSTEM_APP | 0x00000010| 用于系统应用获取AbilityInfo|
**适配指导**<br>
根据调用的@ohos.bundle.bundleManager.d.ts中的接口,使用不同的flag类型。
## cl.bundlemanager.10 默认应用模块ApplicationType枚举值变更
@ohos.bundle.defaultApp模块,相关接口功能未发生变化,使用方式未发生变化。只有ApplicationType的枚举值有变化。
**变更影响**<br>
相关接口版本为API version 9,对API9之前的应用无影响。API9应用需要适配新枚举值。
**关键的接口/组件变更**<br>
ApplicationType的枚举值变化如下:
| ApplicationType | API9新增或变更 | API8及以前 |
| :-----: | :-------------: | :--------: |
| BROWSER | "Web Browser" | "BROWSER" |
| IMAGE | "Image Gallery" | "IMAGE" |
| AUDIO | "Audio Player" | "AUDIO" |
| VIDEO | "Video Player" | "VIDEO" |
| PDF | "PDF Viewer" | "PDF" |
| WORD | "Word Viewer" | "WORD" |
| EXCEL | "Excel Viewer" | "EXCEL" |
| PPT | "PPT Viewer" | "PPT" |
**适配指导**<br>
导入默认应用的模块,调用相关的接口。
```
import defaultApp form '@ohos.bundle.defaultAppManager'
```
## cl.bundlemanager.11 分布式包管理模块变更,原@ohos.distributedBundle.d.ts接口全部废弃,变更为@ohos.bundle.distributedBundle.d.ts,涉及接口变更。
API异常错误整改,分布式包管理模块变更,原@ohos.distributedBundle.d.ts接口全部废弃,变更为[@ohos.bundle.distributedBundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.distributedBundleManager.d.ts)。涉及接口getRemoteAbilityInfos,变更为getRemoteAbilityInfo。相关结构体RemoteAbilityInfo的二级模块导出功能也需要导入新模块才可以继续使用。
**变更影响**<br>
对API version 9之前的应用无影响。分布式模块和getRemoteAbilityInfos名称变更,会导致原有API version 9应用使用新的sdk编译失败。
**关键的接口/组件变更**<br>
@ohos.distributedBundle.d.ts中接口全部废弃,新增@ohos.bundle.distributedBundle.d.ts,其中部分接口保持与原接口功能一致。新接口全部支持异常处理。接口变更如下:
| 废弃 | API9新增或变更 | systemapi |
|----| ----| -- |
| getRemoteAbilityInfos | getRemoteAbilityInfo | 是|
**适配指导**<br>
需要导入新的分布式模块:
```
import distributedBundle form '@ohos.bundle.distributedBundle'
```
## cl.bundlemanager.12 免安装模块和接口变更,从@ohos.bundle.d.ts移到@ohos.bundle.freeInstall.d.ts,涉及模块和接口变更
API支持异常处理整改,免安装模块变更,从@ohos.bundle.d.ts移到@ohos.bundle.freeInstall.d.ts,涉及模块和接口变更,系统能力为SystemCapability.BundleManager.BundleFramework.FreeInstall。
1. 原导入的@ohos.bundle模块需要变更为@ohos.bundle.freeInstall。
2. setModuleUpgradeFlag变更为setHapModuleUpgradeFlag。
3. isModuleRemovable变更为isHapModuleRemovable。
4. getDispatcher变更为getDispatchInfo
**变更影响**<br>
对API version 9之前的应用无影响,使用API9接口的应用会编译失败。
**关键的接口/组件变更**<br>
免安装相关接口变更如下表所示。未在表中列出的表示接口名称和使用方法未发生变更,仅修改了模块名称。
|废弃 | API9新增或变更 | systemapi |
|----|----|----|
|setModuleUpgradeFlag|setHapModuleUpgradeFlag| 是 |
|isModuleRemovable|isHapModuleRemovable| 是 |
|getDispatcher|getDispatchInfo| 是 |
**适配指导**<br>
使用免安装相关接口,需要导入新的模块,按照接口前后对应关系进行修改。
```
import freeInstall from '@ohos.bundle.freeInstall'
```
## cl.bundlemanager.13 免安装相关结构体DisPatchInfo、AbilityFormInfo、ModuleDistroInfo和ModuleConfigInfo发生字段变更
免安装相关结构体DisPatchInfo、AbilityFormInfo、ModuleDistroInfo和ModuleConfigInfo发生字段变更:
1. DispatchInfo中字段dispatchAPI名称修改为[dispatchAPIVersion](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/DispatchInfo.d.ts),属性不变,为string。表示免安装接口的版本信息,含义不变。
2. AbilityFormInfo结构体字段属性变更,原有字段supportDimensions属性由Array\<number>修改为Array\<string>;
3. AbilityFormInfo结构体字段属性变更,原有字段defaultDimension属性由number修改为string。
4. ModuleDistroInfo结构体废弃mainAbility字段,移至ModuleConfigInfo结构体中。
5. ModuleConfigInfo结构体新增mainAbility字段。
**变更影响**<br>
对API version 9之前的应用无影响。结构体名称字段属性变更,会导致原有API9应用使用新的sdk编译失败。
**关键的接口/组件变更**<br>
1. DispatchInfo
| 废弃 | API9新增或变更 | 属性|
|---|----|---|
| dispatchAPI | dispatchAPIVersion | string |
2. AbilityFormInfo
| 字段 | API9属性 | 原属性 |
|---|----|---|
| supportDimensions | Array\<string> | Array\<number> |
| defaultDimension | string| number |
3. ModuleDistroInfo
| 字段 | API9新增或变更 | 属性 |
|---|----|---|
| mainAbility | 无| string |
4. MooduleConfigInfo
| 字段 | API9新增或变更 | 属性 |
|---|----|---|
| 无 | mainAbility| string |
**适配指导**<br>
使用免安装相关接口,需要导入新的模块,按照结构体前后对应关系进行修改。
```
import freeInstall from '@ohos.bundle.freeInstall'
```
## cl.bundlemanager.14 结构体GrantStatus变更为PermissionGrantState
结构体GrantStatus变更为PermissionGrantState,枚举类型和值不变。
**变更影响**<br>
对API version 9之前的应用无影响。结构体名称字变更,会导致原有API9应用使用新的sdk编译失败。
**关键的接口/组件变更**<br>
表示授权状态的GrantStatus结构体变更为@ohos.bundle.bundleManager.d.ts中的PermissionGrantState。
| 枚举名 | 枚举值 |
| ---| ---|
| PERMISSION_DENIED | -1 |
| PERMISSION_GRANTED | 0 |
**适配指导**<br>
需要导入新的模块,修改结构体名称为PermissionGrantState。
```
import bundle form '@ohos.bundle.bundleManager'
```
## cl.bundlemanager.15 包管理ShortcutInfo结构体字段变更
包管理ShortcutInfo结构体字段变更,原有bundle/shortcutInfo.d.ts字段全部废弃,变更为[bundleManager/shortcutInfo.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ShortcutInfo.d.ts)。ShortcutInfo和ShortWant结构体全部为systemapi。
**变更影响**<br>
对API version 9之前的应用无影响。结构体名称字段属性变更,会导致原有API9应用使用新的sdk编译失败。
**关键的接口/组件变更**<br>
涉及到ShortcutInfo和ShortcutWant结构体。如果需要使用二级模块导出功能,需要导入新模块@ohos.bundle.launcherBundleManager。
ShortcutInfo结构体变化如下表,未在表格中列出的表明字段在API9上还存在。
| 废弃 | API9新增或变更 | 属性 |
| ---| ---| ---|
| disableMessage | 无 | string |
| isStatic | 无 | boolean |
| isHomeShortcut | 无 | boolean |
| isEnabled | 无 | boolean |
| disableMessage | 无 | boolean |
ShortcutWant结构体如下表,未在表格中列出的表明字段在API9上还存在。
| 废弃 | API9新增或变更 | 属性 |
| ---| ---| ---|
| targetClass | targetAbility | string |
**适配指导**<br>
使用免安装相关接口,需要导入新的模块,按照结构体前后对应关系进行修改。
```
import launcherBundleManager form '@ohos.bundle.launcherBundleManager'
```
## cl.bundlemanager.16 包管理getBundleInstaller接口变更,从@ohos.bundle.d.ts移至@ohos.bundle.installer.d.ts
包管理getBundleInstaller接口变更,从@ohos.bundle.d.ts移至[@ohos.bundle.installer.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.installer.d.ts)
.,系统能力为SystemCapability.BundleManager.BundleFramework.Core。
**变更影响**<br>
对API version 9之前的应用无影响。使用API9的应用需要适配新模块和新接口。
**关键的接口/组件变更**<br>
1. getBundleInstaller,导入模块由@ohos.bundle变更为@ohos.bundle.installer。
**适配指导**<br>
导入新的包管理安装模块,调用getBundleInstaller
```
import installer form '@ohos.bundle.installer'
```
## cl.bundlemanager.17 包管理安装接口变更,从bundle/bundleInstaller.d.ts移至@ohos.bundle.installer.d.ts
包管理安装接口变更,从bundle/bundleInstaller.d.ts移至[@ohos.bundle.installer.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.installer.d.ts),系统能力为SystemCapability.BundleManager.BundleFramework.Core。
**变更影响**<br>
对API version 9之前的应用无影响。使用API9的应用需要适配新模块和新接口。
**关键的接口/组件变更**<br>
1. install/uninstall/recover接口增加了异常处理能力,接口名称和入参均未发生变化,仅修改了模块名称。
2. HashParam结构体新增字段
| API9新增 | 属性 |
|---|---|
| moduleName | string |
| hashValue | string |
3. InstallParam结构体变更如下:
| API9新增 | 属性 |
|---|--|
| userId | number |
| installFlag | number |
| isKeepData | boolean |
| hashParams | Array\<HashParam> |
| crowdtestDeadline | number |
4. InstallStatus,结构体已废弃。
**适配指导**<br>
导入新的包管理安装模块,调用getBundleInstaller
```
import installer form '@ohos.bundle.installer'
```
## cl.bundlemanager.18 包管理安装功能变更
包管理安装规格变更,增加了对应用deviceType配置和设备类型的匹配校验,如果两者匹配失败,则安装失败。
**变更影响**<br>
影响在此前版本已开发的应用,应用需要适配才能在新版本镜像安装成功。
**关键的接口/组件变更**<br>
不涉及
**适配指导**<br>
提供指导,在应用配置文件config.json或者module.json的deviceType配置对应的设备类型。
```
{
"module": {
"name": "entry",
"type": "entry",
// ...
"deviceTypes":[
// 该示例配置了default和tablet,则支持在default和tablet上进行安装。
"default",
"tablet"
],
// ...
}
```
## cl.bundlemanager.19 包管理innerBundleManger模块接口变更,@ohos.bundle.innerBundleManger.d.ts接口全部废弃,移至@ohos.bundle.launcherBundleManager.d.ts。
innerBundleManager相关接口功能未发生变化,使用方式有变化。需要导入[@ohos.bundle.launcherBundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.launcherBundleManager.d.ts)模块来使用innerBundleManager相关的接口,系统能力为SystemCapability.BundleManager.BundleFramework.Core。
**变更影响**<br>
相关接口版本为API version 9,对api9之前的应用无影响。使用了innerBundleManager接口能力的应用需要适配新的模块和接口。
**关键的接口/组件变更**<br>
以下接口功能和入参未发生变化,增加了API异常处理。使用二级模块导出ShortcutInfo和ShortcutWant时,需要导入新模块@ohos.bundle.launcherBundleManager。on/off接口从@ohos.bundle.innerBundleManger.d.ts中废弃,移至@ohos.bundle.bundleMonitor.d.ts中。
1. getLauncherAbilityInfos<br>
2. getAllLauncherAbilityInfos<br>
3. getShortcutInfos
**适配指导**<br>
需要导入新模块@ohos.bundle.launcherBundleManage
```
import launcherBundleManager form '@ohos.bundle.launcherBundleManage'
```
## cl.bundlemanager.20 innerBundleManagr模块变更,on, off接口从@ohos.bundle.innerBundleManager模块移到@ohos.bundle.bundleMonitor.d.ts模块
innerBundleManager相关接口功能未发生变化,使用方式有变化。需要导入[@ohos.bundle.bundleMonitor.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleMonitor.d.ts)模块来使用innerBundleManager相关的接口,均为systemapi。系统能力为SystemCapability.BundleManager.BundleFramework.Core。
**变更影响**<br>
相关接口版本为API version 9,对API9之前的应用无影响。使用了innerBundleManager接口能力的应用需要适配新的模块和接口。
**关键的接口/组件变更**<br>
on/off变更至@ohos.bundle.bundleMonitor.d.ts,使用接口入参与老接口不同。API9函数原型为:
```
function on(type: BundleChangedEvent, callback: Callback<BundleChangedInfo>): void;
function off(type: BundleChangedEvent, callback?: Callback<BundleChangedInfo>): void;
```
其中BundleChangedEvent为:
```
type BundleChangedEvent = 'add' | 'update' | 'remove';
```
回调函数BundleChangedInfo为:
```
interface BundleChangedInfo {
readonly bundleName: string;
readonly userId: number;
}
```
由调用方获取到BundleChangedInfo后,继续执行相关操作(即老接口中BundleStatusCallback中的add、update和remove等函数)。
**适配指导**<br>
导入bundleMonitor的模块,调用相关接口。
```
import bundleMonitor form '@ohos.bundle.bundleMonitor'
```
## cl.bundlemanager.21 包管理bundleStatusCallback.d.ts接口全部废弃,移至@ohos.bundle.bundleMonitor.d.ts中。
包管理bundleStatusCallback.d.ts接口全部废弃,移至[@ohos.bundle.bundleMonitor.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleMonitor.d.ts)中。原有BundleStatusCallback中的add、update和remove全部废弃,变更为BundleChangedEvent,为systemapi。系统能力为SystemCapability.BundleManager.BundleFramework.Core。
**变更影响**<br>
相关接口版本为API version 9,对API9之前的应用无影响。使用了BundleStatusCallback接口能力的应用需要适配新的模块和接口。
**关键的接口/组件变更**<br>.
以下接口全部废弃,在@ohos.bundle.bundleMonitor.d.ts中新增BundleChangedEvent。
1. add
2. update
3. remove
**适配指导**<br>
导入bundleMonitor的模块,调用相关接口。与之前的BundleStatusCallback方式不同,BundleStatusCallback是将add、update和remove方法传入on/off接口,API9的BundleMonitor接口是通过on/off接口将BundleChangedInfo通过回调函数返回出来给调用方使用。
```
import bundleMonitor form '@ohos.bundle.bundleMonitor'
```
## cl.bundlemanager.22 包管理Zlib模块接口变更,@ohos.zlib.d.ts中接口涉及废弃和变更。
包管理Zlib模块接口变更,[@ohos.zlib.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.zlib.d.ts)中接口涉及废弃和变更。系统能力为SystemCapability.BundleManager.Zlib。
**变更影响**<br>
相关接口版本为API version 9,对API9之前的应用无影响。使用了API9的应用需要适配新的模块和接口。
**关键的接口/组件变更**<br>
@ohos.zlib.d.ts中涉及到变更的接口如下表所示,新增API9接口使用方法与之前相同,支持API异常处理。
| 废弃 | API9新增或变更 | systemapi|
|---|----|---|
| zipFile | compressFile | 是 |
| unzipFile | decompressFile | 是 |
| ErrorCode | 无 | 是 |
**适配指导**<br>
导入模块未发生变化,直接使用新接口,适配异常处理。
```
import zlib form '@ohos.zlib'
```
# 帐号子系统ChangeLog
## cl.account_os_account.1 帐号SystemAPI错误信息返回方式变更
已发布的部分帐号SystemAPI使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。从API9开始作以下变更:
异步接口:通过AsyncCallback或Promise的error对象返回错误信息。
同步接口:通过抛出异常的方式返回错误信息。
**变更影响**
基于此前版本开发的应用,需适配变更接口的错误信息返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更**
变更前:
- class UserAuth
- setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;number&gt;): void;
- setProperty(request: SetPropertyRequest): Promise&lt;number&gt;;
- cancelAuth(contextID: Uint8Array): number;
- class PINAuth
- registerInputer(inputer: Inputer): boolean;
- UserIdentityManager
- cancel(challenge: Uint8Array): number;
变更后:
- class UserAuth
- setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;void&gt;): void;
- setProperty(request: SetPropertyRequest): Promise&lt;void&gt;;
- cancelAuth(contextID: Uint8Array): void;
- class PINAuth
- registerInputer(inputer: Inputer): void;
- UserIdentityManager
- cancel(challenge: Uint8Array): void;
**适配指导**
异步接口以setProperty为例,示例代码如下:
```
import account_osAccount from "@ohos.account.osAccount"
userAuth.setProperty({
authType: account_osAccount.AuthType.PIN,
key: account_osAccount.SetPropertyType.INIT_ALGORITHM,
setInfo: new Uint8Array([0])
}, (err) => {
if (err) {
console.log("setProperty failed, error: " + JSON.stringify(err));
} else {
console.log("setProperty successfully");
}
});
userAuth.setProperty({
authType: account_osAccount.AuthType.PIN,
key: account_osAccount.SetPropertyType.INIT_ALGORITHM,
setInfo: new Uint8Array([0])
}).catch((err) => {
if (err) {
console.log("setProperty failed, error: " + JSON.stringify(err));
} else {
console.log("setProperty successfully");
}
});
```
同步接口以registerInputer为例,示例代码如下:
```
import account_osAccount from "@ohos.account.osAccount"
let pinAuth = new account_osAccount.PINAuth()
let inputer = {
onGetData: (authType, passwordRecipient) => {
let password = new Uint8Array([0]);
passwordRecipient.onSetData(authType, password);
}
}
try {
pinAuth.registerInputer(inputer);
} catch (err) {
console.log("registerInputer failed, error: " + JSON.stringify(err));
}
```
## cl.account_os_account.2 应用帐号鉴权服务ACTION定义变更
**变更影响**
基于此前版本开发的应用,需适配修改应用配置文件(FA模型为config.json或Stage模型为module.json5)中的ACTION才能正常对外提供应用鉴权服务。
**关键接口/组件变更**
涉及的常量:
@ohos.ability.wantConstant.ACTION_APP_ACCOUNT_AUTH
变更前:
ACTION_APP_ACCOUNT_AUTH = "account.appAccount.action.auth"
变更后:
ACTION_APP_ACCOUNT_AUTH = "ohos.appAccount.action.auth"
**适配指导**
提供应用帐号鉴权服务的三方应用,需要在相关ServiceAbility的配置文件(FA模型为config.json或Stage模型为module.json5)中适配变更后的应用帐号认证ACTION,示例如下:
```
"abilities": [
{
"name": "ServiceAbility",
"srcEntrance": "./ets/ServiceAbility/ServiceAbility.ts",
...
"visible": true,
"skills": {
{
"actions": [
"ohos.appAccount.action.auth"
]
}
}
}]
}
# 分布式调度子系统ChangeLog
## cl.DistributedManagerService.1 continuationManager接口新增DATASYNC权限校验
此前版本continuationManager接口未对调用方进行校验,不符合OpenHarmony的API接口规范。
已做出以下变更:调用方使用continuationManager前需提前申请"ohos.permission.DISTRIBUTED_DATASYNC"权限。
**变更影响**
基于此前版本开发的应用,需提前申请"ohos.permission.DISTRIBUTED_DATASYNC"权限,否则会影响原有业务逻辑。
**关键的接口/组件变更**
涉及接口
- continuationManager.registerContinuation;
- continuationManager.on;
- continuationManager.off;
- continuationManager.unregisterContinuation;
- continuationManager.updateContinuationState;
- continuationManager.startContinuationDeviceManager;
# xxx子系统ChangeLog
相比最近一个发布版本(包括不限于LTS、Release、Beta、monthly版本)发生了影响契约兼容性(契约兼容:也称语义兼容,指版本演进后,开发者原有程序行为不发生变化)的变更(包括不限于接口名、参数、返回值、所需要的权限、调用顺序、枚举值、配置参数、路径等),则需要在ChangeLog中对变更进行阐述。
## cl.subsystemname.x xxx功能变更, 例:DeviceType属性变更、相机权限变更(尽量概括,不要超过15个字)
每个变更标题前需要附加编号:cl.subsystemname.x。cl为ChangeLog首字母缩写,subsystemname请填写子系统英文标准名称,x表示变更序号(从低到高逐位增加,起始为1)。
以功能维度对变更点进行概括描述。例如:xxx功能的xxx、xxx等发生了xxx变化,开发者需要根据以下说明对应用进行适配。
如果有此变更有对应的需求或设计文档,可以在描述中附上对应的设计文档编号。
**变更影响**
是否影响已发布的接口或者接口行为发生变更,影响的是JS接口还是Native接口。
是否影响在此前版本已开发的应用,即应用是否需要进行适配动才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更**
列举此功能变更涉及的接口/组件变更。
**适配指导(可选,不涉及则可以删除)**
提供指导,帮助开发者针对相关变更进行适配,使应用可以与新版本兼容。
例:
在xxx文件中将xxx参数修改为xxx。
```
sample code
```
# 用户IAM子系统Changelog
## cl.useriam.1 API9 GetVesion接口删除
为优化用户IAM接口,从当前版本开始做如下变更:
用户IAM删除GetVersion(API 9)接口。
**变更影响**
对用户IAM GetVersion(API 9)接口的使用有影响,需删除对此接口的调用,否则会调用失败。
**关键接口/组件变更**
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| ---------------------- | ------------------- | ------------------------- | ------------------------ |
| ohos.userIAM.userAuth | function | getVersion() : number | 删除 |
**适配指导**
需删除对用户IAM GetVersion(API 9)接口的调用。
## cl.useriam.2 API8 GetVesion接口返回值变更
为统一用户IAM GetVersion(API 8)接口的返回值。从当前版本开始做如下变更:
用户IAM GetVersion(API 8)接口的返回值由0变更为1。
**变更影响**
对用户IAM GetVersion(API 8)接口的使用有影响,如应用校验了此接口的返回值,修改后校验不通过。
**关键接口/组件变更**
用户IAM GetVersion(API 8)接口的返回值由0变更为1。
**适配指导**
此接口已废弃,需删除对用户IAM GetVersion(API 8)接口的使用。
# 帐号子系统ChangeLog
## cl.account_os_account.1 分布式帐号昵称和头像规格扩大
已有分布式帐号的昵称长度和头像大小的规格过小,无法满足其他昵称较长、头像较大的使用场景。
因此,将分布式帐号昵称长度和头像大小的规格扩大。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可按照最新规格使用该接口,原有逻辑不受影响。
**关键接口/组件变更**
变更前:
- 昵称长度限制为20个字符,头像大小限制为3M
变更后:
- 昵称长度限制为1024个字符,头像大小限制为10M
# web子系统ChangeLog
OpenHarmony 4.0.2.1 版本相较于OpenHarmony 之前的版本,web的API变更如下。
## cl.web.1 postMessageEvent参数类型变更
该接口postMessageEvent原先仅支持string类型,从4.0.2.1版本开始新增支持ArrayBuffer类型。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,原有功能不受影响。
**关键的接口/组件变更**
- 涉及接口
postMessageEvent(message: string): void
- 变更前:
```ts
postMessageEvent(message: string): void
```
- 变更后:
```ts
type WebMessage = ArrayBuffer | string
postMessageEvent(message: WebMessage): void
```
**适配指导**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,原有功能不受影响。
## cl.web.2 onMessageEvent参数类型变更
该接口onMessageEvent原先仅支持string类型,从4.0.2.1版本开始新增支持ArrayBuffer类型。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,增加相应的逻辑处理,原有功能不受影响。
**关键的接口/组件变更**
- 涉及接口
onMessageEvent(callback: (result: string) => void): void
- 变更前:
```ts
onMessageEvent(callback: (result: string) => void): void
```
- 变更后:
```ts
type WebMessage = ArrayBuffer | string
onMessageEvent(callback: (result: WebMessage) => void): void
```
**适配指导**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,增加相应的逻辑处理,原有功能不受影响。
\ No newline at end of file
# 全球化子系统ChangeLog
## cl.global.1 国际化模块系统接口添加运行时鉴权
全球化子系统国际化组件在如下场景中提供的系统接口添加运行时鉴权。从API9开始作以下变更:
- 设置系统语言、系统国家或地区、系统区域
- 设置系统24小时制
- 添加、移除系统偏好语言
- 设置本地化数字
开发者需要根据以下说明对应用进行适配。
**变更影响**
上述场景涉及的国际化系统接口添加运行时鉴权,只有具有UPDATE_CONFIGURATION权限的系统应用可以正常调用。
**关键的接口/组件变更**
- 涉及接口
- setSystemLanguage(language: string): void;
- setSystemRegion(region: string): void;
- setSystemLocale(locale: string): void;
- set24HourClock(option: boolean): void;
- addPreferredLanguage(language: string, index?: number): void;
- removePreferredLanguage(index: number): void;
- setUsingLocalDigit(flag: boolean): void;
**适配指导**
确保应用为系统应用,非系统应用禁止调用上述接口。
当前权限不足或非系统应用调用该接口时会抛出异常,可以通过try-catch来捕获异常。
```js
import I18n from '@ohos.i18n'
try {
I18n.System.setSystemLanguage('zh');
} catch(error) {
console.error(`call System.setSystemLanguage failed, error code: ${error.code}, message: ${error.message}.`)
}
```
\ No newline at end of file
# web子系统ChangeLog
OpenHarmony 4.0.2.2 版本相较于OpenHarmony 之前的版本,web的API变更如下。
## cl.web.1 删除webDebuggingAccess接口
该接口定义不合理,该属性对所有web实例生效的,属于全局配置。用本次新增的接口setWebDebuggingAccess替换。
**变更影响**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换。
**关键的接口/组件变更**
| 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- |
|WebAttribute | method | webDebugggingAccess(webDebugggingAccess: boolean): WebAttribute| 删除 |
**适配指导**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换。
## cl.web.2 新增setWebDebuggingAccess接口
WebviewController提供静态方法来设置调试模式开关,该设置对所有web实例生效。
**变更影响**
原有webDebugggingAccess属性定义不合理,因此新增该静态接口来设置调试模式开关。应用侧需要使用该接口来打开调试模式开关。
**关键的接口/组件变更**
| 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- |
|webview.WebviewController | method | static setWebDebugggingAccess(webDebugggingAccess: boolean): void| 新增 |
**适配指导**
以打开调试开关为例,示例代码如下:
```ts
// xxx.ets
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
aboutToAppear():void {
try {
web_webview.WebviewController.setWebDebuggingAccess(true);
} catch(error) {
console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
}
}
build() {
Column() {
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
\ No newline at end of file
# 包管理子系统ChangeLog
## cl.bundlemanager.1 底层能力变更,安装hap时,hap中的文件不再解压到安装目录。
安装hap后,安装目录下只会存在hap文件,应用不能再使用拼接路径访问解压后的资源文件,应用想要访问资源文件,需要使用标准的资源管理接口。
**变更影响**<br>
如果应用使用拼接路径的形式访问资源文件,会访问失败。需要修改成使用资源管理接口访问资源文件。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
资源管理子系统提供Js接口访问资源文件。参考[访问资源文件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-resource-manager.md#getrawfilecontent9)
# 元能力子系统ChangeLog
## cl.ability.1 appRecovery接口中RestartFlag属性名称变更,删除了未支持的属性
appRecovery接口中RestartFlag枚举命名从特定故障发生后**不重启**改成了特定故障发生后**重启**
删除了CPP_CRASH_NO_RESTART。
**变更影响**
4.0.2.3版本之前使用CPP_CRASH_NO_RESTART/JS_CRASH_NO_RESTART/APP_FREEZE_NO_RESTART类型开发的应用,在4.0.2.3版本之后行为会发生变化。
**关键接口/组件变更**
**RestartFlag** <sup>9+</sup>
变更前:
| 名称 | 值 | 说明 |
| ----------------------------- | ---- | ------------------------------------------------------------ |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | 0x0001 | 发生CPP_CRASH时**不重启**应用。 |
| JS_CRASH_NO_RESTART | 0x0002 | 发生JS_CRASH时**不重启**应用。 |
| APP_FREEZE_NO_RESTART | 0x0004 | 发生APP_FREEZE时**不重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
变更后:
| 名称 | 值 | 说明 |
| ---------- | ---- | ---------- |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | NA | **删除**,不支持该场景的重启。 |
| RESTART_WHEN_JS_CRASH | 0x0001 | 发生JS_CRASH时**重启**应用。 |
| RESTART_WHEN_APP_FREEZE | 0x0002 | 发生APP_FREEZE时**重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
**适配指导**
按新的语义进行适配。
\ No newline at end of file
# USB服务子系统ChangeLog
## cl.usb_manager.1 包名变更
基于此前版本开发的应用,需修改导入的包名,否则会影响原有业务逻辑。
**关键接口/组件变更**
| 旧包名 | 新包名 |
|------------------ | ------------------- |
| ohos.usbV9.d.ts | ohos.usbManager.d.ts |
**适配指导**
开发者导入时将@ohos.usbV9更换为@ohos.usbManager即可。
## cl.usb_manager.2 接口参数类型变更
基于此前版本开发的应用,需修改参数类型,否则会影响原有业务逻辑。
**关键接口/组件变更**
| 旧类名 | 新类名 |
|---------------| ------------- |
| interface USBConfig | interface USBConfiguration |
| 旧命名空间 | 新命名空间 |
|---------------| ------------- |
| @namespace usbV9 | @namespace usbManager |
| 包名 | 旧接口 | 新接口 |
| --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ohos.usbManager.d.ts | function setConfiguration(pipe: USBDevicePipe, config: USBConfig): number; | function setConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number; |
**适配指导**
调用setConfiguration接口时参数类型USBConfig修改为USBConfiguration即可。
\ No newline at end of file
# arkui子系统ChangeLog
## cl.arkui.1 getInspectorTree接口返回值从string修改为Object。
**变更影响**
4.0.3.2之前使用getInspectorTree接口的代码需要适配
**关键的接口/组件变更**
getInspectorTree接口返回值从string修改为Object
**适配指导**
将getInspectorTree返回值作为string使用的代码需要修改,比如以下示例代码:
```typescript
console.info(getInspectorTree())
```
需要修改成
```typescript
console.info(JSON.stringify(getInspectorTree()))
```
## cl.arkui.2 废弃GridItem的forceRebuild属性
**变更影响**
无,该属性无作用
**关键的接口/组件变更**
GridItem的forceRebuild属性废弃
**适配指导**
如有使用可以直接删除,不影响GridItem功能
## cl.arkui.1 API9 router接口整改。
ohos.router中的enableAlertBeforeBackPage、enableBackPageAlert、disableAlertBeforeBackPage接口名不利于开发者理解,更改为showAlertBeforeBackPage、hideAlertBeforeBackPage。
**变更影响**
router的enableAlertBeforeBackPage、enableBackPageAlert接口需替换为showAlertBeforeBackPage;
disableAlertBeforeBackPage接口需替换为hideAlertBeforeBackPage。
**关键的接口/组件变更**
涉及router.enableAlertBeforeBackPage, router.enableBackPageAlert, router.disableAlertBeforeBackPage。
* 变更前:
```ts
router.enableAlertBeforeBackPage();
router.enableBackPageAlert()
```
* 变更后:
```ts
router.showAlertBeforeBackPage()
```
* 变更前:
```ts
router.disableAlertBeforeBackPage()
```
* 变更后:
```ts
router.hideAlertBeforeBackPage()
```
**适配指导**
将enableAlertBeforeBackPage、enableBackPageAlert替换为showAlertBeforeBackPage;
将disableAlertBeforeBackPage替换为hideAlertBeforeBackPage。
# 包管理子系统ChangeLog
## cl.bundlemanager.1 包管理删除@ohos.bundle.bundleManager.d.ts中的getAbilityIcon接口,可以使用@ohos.resourceManager.d.ts中的getMediaContent替换。
包管理删除[@ohos.bundle.bundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleManager.d.ts)中的getAbilityIcon接口,可以使用[@ohos.resourceManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.resourceManager.d.ts)中的getMediaContent替换。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了getAbilityIcon接口的,需要改为使用getMediaContent接口。
**关键的接口/组件变更**<br>
删除@ohos.bundle.bundleManager.d.ts中的getAbilityIcon接口。
**适配指导**<br>
使用@ohos.bundle.bundleManager.d.ts下面的getAbilityIcon,需要修改为@ohos.resourceManager.d.ts中的getMediaContent。需要提前获取到图标的资源ID值,可参考该接口的[使用指导](../../../application-dev/reference/apis/js-apis-resource-manager.md#getmediacontent9)
## cl.bundlemanager.2 包管理新增202错误码
包管理系统新增202错误码,非系统应用调用api9及之后包管理提供的系统api,将返回错误202。
**变更影响**<br>
非系统应用调用api9及之后包管理提供的系统api,将返回错误202。
**关键的接口/组件变更**<br>
所有包管理提供的api9及之后的系统api,非系统应用调用将返回错误202。
**适配指导**<br>
不影响已开发的程序,无需适配。
\ No newline at end of file
# 文件管理子系统ChangeLog
## cl.filemanagement.1 Filter类型模块变更
**变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现Filter类型变更至@ohos.file.fs模块下。Filter类型具体属性不变。
**关键接口/组件变更**
原Filter类型在模块@ohos.fileio下,通过以下方式import:
```js
import Filter from '@ohos.fileio';
```
**适配指导**
现Filter类型在模块@ohos.file.fs,通过以下方式import:
```js
import Filter from '@ohos.file.fs';
```
# 资源调度子系统ChangeLog
## cl.resourceschedule.workScheduler
WorkSchedulerExtensionAbility提供默认的WorkSchedulerExtensionContext。
**变更影响**
基于OpenHarmony4.0.5.1及之后的SDK版本开发的应用,可使用默认的context属性作为WorkSchedulerExtension的上下文环境。
**关键接口/组件变更**
@ohos.WorkSchedulerExtensionAbility.d.ts中新增context属性。新增文件application/WorkSchedulerExtensionContext.d.ts,继承自ExtensionContext。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| @ohos.WorkSchedulerExtensionAbility.d.ts | WorkSchedulerExtensionAbility | context: WorkSchedulerExtensionContext; | 新增 |
| application/WorkSchedulerExtensionContext.d.ts | WorkSchedulerExtensionContext | - | 新增 |
**适配指导**<br>
通过WorkSchedulerExtensionAbility子类实例来获取WorkSchedulerExtensionContext。
```ts
import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
onWorkStart(workInfo) {
let WorkSchedulerExtensionContext = this.context; // 获取WorkSchedulerExtensionContext
}
}
```
\ No newline at end of file
# 元能力子系统ChangeLog
## cl.ability.appRecovery新增saveAppState接口
新增接口saveAppState(context?: UIAbilityContext): boolean;
**变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可以使用saveAppState接口传入指定Ability Context,实现主动保存指定的Ability状态。
**关键接口/组件变更**
@ohos.app.ability.appRecovery.d.ts中新增saveAppState接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| @ohos.app.ability.appRecovery.d.ts | appRecovery | saveAppState(context?: UIAbilityContext): boolean; | 新增 |
**适配指导**
通过调用saveAppState传入UIAbility Context参数主动保存此指定的Ability的状态。
```ts
import appRecovery from '@ohos.app.ability.appRecovery';
onBackground() {
hilog.info(0x0000, '[demo]', '%{public}s', 'EntryAbility onBackground');
appRecovery.saveAppState(this.context)
}
```
## cl.ability.appRecovery新增setRestartWant接口
新增接口setRestartWant(want: Want): void;
**变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可以使用setRestartWant接口设置下次由恢复主动拉起场景下的Ability。
**关键接口/组件变更**
@ohos.app.ability.appRecovery.d.ts中新增setRestartWant接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| @ohos.app.ability.appRecovery.d.ts | appRecovery | setRestartWant(want: Want): void; | 新增 |
**适配指导**
通过调用setRestartWant设置下次恢复到的指定Ability。
```ts
import appRecovery from '@ohos.app.ability.appRecovery';
Button("启动到恢复Ability")
.fontSize(40)
.fontWeight(FontWeight.Bold)
.onClick(()=> {
// set restart want
let want = {
bundleName: "ohos.samples.recovery",
abilityName: "RecoveryAbility"
};
appRecovery.setRestartWant(want);
})
```
\ No newline at end of file
# arkui子系统ChangeLog
## cl.arkui.1 List组件和Gird组件滚动条默认状态变更
List组件和Gird组件滚动条默认状态从BarState.Off变更为BarState.Auto。
**变更影响**
List组件和Gird组件,如果没有设置滚动条状态,变更前不会显示滚动条,变更以后滚动时会显示滚动条,滚动停止两秒后滚动条隐藏。
**关键接口/组件变更**
List组件和Gird组件滚动条API接口文档:
- [List组件属性](../../../application-dev/reference/arkui-ts/ts-container-list.md#属性)
- [Grid组件属性](../../../application-dev/reference/arkui-ts/ts-container-grid.md#属性)
**适配指导**
对于不需要滚动条的场景,需要将List组件或Grid组件的scrollBar属性设置为BarState.Off。
参考代码如下:
```ts
// xxx.ets
@Entry
@Component
struct ListItemExample {
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
build() {
Column() {
List({ space: 20, initialIndex: 0 }) {
ForEach(this.arr, (item) => {
ListItem() {
Text('' + item)
.width('100%').height(100).fontSize(16)
.textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
}
}, item => item)
}
.width('90%')
.scrollBar(BarState.Off)
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
}
}
```
\ No newline at end of file
# HUKS子系统ChangeLog
OpenHarmony 4.0.6.1 版本相较于OpenHarmony 之前的版本,HUKS的API使用权限变更如下。
## cl.huks.1 attestKeyItem接口使用权限变更
attestKeyItem是基于设备证书链封装业务公钥对用户指定的密钥进行证明,如果设备证书随意导出涉及用户隐私风险,所以此接口需要增加系统权限管控。
**变更影响**
对于不具备system权限或者ohos.permission.ACCESS_IDS权限的应用,无法正常使用attestKeyItem接口。
**关键的接口/组件变更**
- 涉及接口
attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult\>): void;
attestKeyItem(keyAlias: string, options: HuksOptions): Promise\<HuksReturnResult\>;
- 变更前:
只针对传入ATTESTATION_ID相关TAG的应用校验AccessToken权限,其它情况无接口权限的限制。
- 变更后:
只有具备system权限的系统应用或者申请了ohos.permission.ACCESS_IDS权限的普通应用才能正常使用attestKeyItem接口。
**适配指导**
已经具备system权限的应用则可以正常使用attestKeyItem接口,其余普通应用需申请ohos.permission.ACCESS_IDS权限即可,申请方法参考[ACL权限配置说明](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/accesstoken-overview.md#%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%88%97%E8%A1%A8acl%E8%AF%B4%E6%98%8E)
\ No newline at end of file
# web子系统ChangeLog
OpenHarmony 4.0.6.1 版本相较于OpenHarmony 之前的版本,web的API变更如下。
## cl.web.1 createWebMessagePorts接口参数
由于WebMessagePort需要新增支持更多数据类型,因此在该接口增加一个可选参数来区分新老接口。
**变更影响**
无,可选参数,可前向兼容。
**关键的接口/组件变更**
- 涉及接口
createWebMessagePorts(): Array<WebMessagePort>;
- 变更前:
```ts
createWebMessagePorts(): Array<WebMessagePort>;
```
- 变更后:
```ts
createWebMessagePorts(isExtentionType?: boolean): Array<WebMessagePort>;
```
**适配指导**
已有应用无需适配。
\ No newline at end of file
# USB服务子系统ChangeLog
## cl.usb_manager.1 sdk接口删除
基于此前版本开发的应用,需修改导入的包名,否则会影响原有业务逻辑。
**关键接口/组件变更**
@ohos.usbV9.d.ts文件已删除,由@ohos.usbManager.d.ts替代。
| 新包名 | 旧包名 | 已删除包名 |
| -------------------- | ------------- | --------------- |
| ohos.usbManager.d.ts | ohos.usb.d.ts | ohos.usbV9.d.ts |
后续需要import @ohos.usbManager才能使用USB服务的接口:
```ts
import usbManager from '@ohos.usbManager';
```
**适配指导**
请参考各接口的[API文档](../../../application-dev/reference/apis/js-apis-usbManager.md)
# 全球化子系统ChangeLog
## cl.resourceManager.1 getStringSync、getStringByNameSync新增接口
相较于之前的版本,在4.0.6.2 版本中,为扩展getStringSync、getStringByNameSync接口字符串匹配功能,新增了接口以及相应的错误码。
| 包名 | 新增接口 |
| --------------- | ---------------------------------------------------- |
| ohos.resourceManager.d.ts | getStringSync(resId: number, ...args: Array<string \| number>): string; |
| ohos.resourceManager.d.ts | getStringSync(resource: Resource, ...args: Array<string \| number>): string; |
| ohos.resourceManager.d.ts | getStringByNameSync(resName: string, ...args: Array<string \| number>): string; |
**变更影响**
之前只能直接获取resources中的string资源的value值,在4.0.6.2 及以上版本中可用通过参数格式化string资源的value值,扩展了格式化字符串的查询能力。
新增错误码:
9001007 根据当前id获取的资源格式化失败
9001008 根据当前名称获取的资源格式化失败
**示例代码**
以调用接口getStringSync为例,变更前只支持示例1,变更后示例1、示例2都支持。
```
示例1:
try {
this.context.resourceManager.getStringSync($r('app.string.test').id);
} catch (error) {
console.error(`getStringSync failed, error code: ${error.code}, message: ${error.message}.`)
}
示例2:
try {
this.context.resourceManager.getStringSync($r('app.string.test').id, "format string", 787, 98.78);
} catch (error) {
console.error(`getStringSync failed, error code: ${error.code}, message: ${error.message}.`)
}
```
**适配指导**
请参考接口说明:
[新增接口参考](../../../application-dev/reference/apis/js-apis-resource-manager.md)
[新增错误码参考](../../../application-dev/reference/errorcodes/errorcode-resource-manager.md)
\ No newline at end of file
# ArkUI子系统ChangeLog
修复问题:[Stack](../../../application-dev/reference/arkui-ts/ts-container-stack.md)设置alignContent,在子组件超出父组件的场景中,子组件未按照alignContent布局
示例:
```ts
@Entry
@Component
struct StackExample {
build() {
Stack({alignContent:Alignment.TopEnd}){
Text('First child, show in bottom')
.width(200).height(200).backgroundColor(0xd2cab3).margin(10)
}.width(150).height(150).backgroundColor(Color.Pink).margin(100)
}
}
```
修复前:子组件未能按照alignContent:Alignment.TopEnd布局
![stack](figures/stack_before.jpg)
修复后:子组件可以按照alignContent:Alignment.TopEnd布局
![stack](figures/stack_after.jpg)
**变更影响**
1. 如果应用中有子组件大小大于父组件Stack的场景,需要应用进行适配。
2. 应用之前可能采用的规避方案:给子组件设置Offset或者translate
**适配指导**
去掉之前给子组件设置的Offset或者translate,使用alignContent实际布局方式进行布局。
\ No newline at end of file
# Readme
- [元能力](changelogs-ability.md)
- [ArkUI](changelogs-arkui.md)
- [包管理](changelogs-bundlemanager.md)
- [输入法框架](changelogs-imf.md)
- [全局资源调度](changelogs-resourceschedule.md)
- [主题框架-锁屏](changelogs-screenlock.md)
- [电话服务](changelogs-telephony.md)
- [util](changelogs-util.md)
- [主题框架-壁纸](changelogs-wallpaper.md)
- [web组件](changelogs-web.md)
# arkui子系统ChangeLog # arkui子系统ChangeLog
## cl.arkui.1 getInspectorTree接口返回值从string修改为Object。 ## cl.arkui.1 getInspectorTree接口返回值从string修改为Object。
**变更影响** **变更影响**
3.2.10.7之前使用getInspectorTree接口的代码需要适配 3.2.10.7之前使用getInspectorTree接口的代码需要适配
**关键的接口/组件变更** **关键的接口/组件变更**
getInspectorTree接口返回值从string修改为Object getInspectorTree接口返回值从string修改为Object
**适配指导** **适配指导**
将getInspectorTree返回值作为string使用的代码需要修改,比如以下示例代码: 将getInspectorTree返回值作为string使用的代码需要修改,比如以下示例代码:
```typescript ```typescript
console.info(getInspectorTree()) console.info(getInspectorTree())
``` ```
需要修改成 需要修改成
```typescript ```typescript
console.info(JSON.stringify(getInspectorTree())) console.info(JSON.stringify(getInspectorTree()))
``` ```
## cl.arkui.2 废弃GridItem的forceRebuild属性 ## cl.arkui.2 废弃GridItem的forceRebuild属性
**变更影响** **变更影响**
无,该属性无作用 无,该属性无作用
**关键的接口/组件变更** **关键的接口/组件变更**
GridItem的forceRebuild属性废弃 GridItem的forceRebuild属性废弃
**适配指导** **适配指导**
如有使用可以直接删除,不影响GridItem功能 如有使用可以直接删除,不影响GridItem功能
## cl.arkui.3 Plugin模块接口变更 ## cl.arkui.3 Plugin模块接口变更
### 1. arkui子系统Plugin模块 `PluginComponentTemplate` 接口存在变更: ### 1. arkui子系统Plugin模块 `PluginComponentTemplate` 接口存在变更:
ability命名无法准确表达对应参数的语义,修改为bundleName。 ability命名无法准确表达对应参数的语义,修改为bundleName。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配变更接口,变更前的接口已经不能正常使用,会在编译过程中报错。 基于此前版本开发的应用,需适配变更接口,变更前的接口已经不能正常使用,会在编译过程中报错。
**关键的接口/组件变更** **关键的接口/组件变更**
- 涉及接口 - 涉及接口
interface PluginComponentTemplate { interface PluginComponentTemplate {
source: string; source: string;
bundleName: string; bundleName: string;
} }
interface PluginComponentInterface { interface PluginComponentInterface {
(value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute; (value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute;
} }
- 变更前: - 变更前:
```js ```js
interface PluginComponentTemplate { source: string; ability: string; } interface PluginComponentTemplate { source: string; ability: string; }
interface PluginComponentInterface { interface PluginComponentInterface {
(value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute; (value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute;
} }
``` ```
- 变更后: - 变更后:
```js ```js
interface PluginComponentTemplate { source: string; bundleName: string; } interface PluginComponentTemplate { source: string; bundleName: string; }
interface PluginComponentInterface { interface PluginComponentInterface {
(value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute; (value: { template: PluginComponentTemplate; data: any }): PluginComponentAttribute;
} }
``` ```
**适配指导** **适配指导**
使用变更后的接口,示例代码如下: 使用变更后的接口,示例代码如下:
- 变更前: - 变更前:
```js ```js
PluginComponent({ PluginComponent({
template: { source: 'plugincomponent1', ability: 'com.example.plugin' }, template: { source: 'plugincomponent1', ability: 'com.example.plugin' },
data: { 'countDownStartValue': 'new countDownStartValue' } data: { 'countDownStartValue': 'new countDownStartValue' }
}).size({ width: 500, height: 100 }) }).size({ width: 500, height: 100 })
``` ```
- 变更后: - 变更后:
```js ```js
PluginComponent({ PluginComponent({
template: { source: 'plugincomponent1', bundleName: 'com.example.plugin' }, template: { source: 'plugincomponent1', bundleName: 'com.example.plugin' },
data: { 'countDownStartValue': 'new countDownStartValue' } data: { 'countDownStartValue': 'new countDownStartValue' }
}).size({ width: 500, height: 100 }) }).size({ width: 500, height: 100 })
``` ```
### 2. arkui子系统Plugin模块 `pluginComponentManager` 接口存在变更: ### 2. arkui子系统Plugin模块 `pluginComponentManager` 接口存在变更:
want命名无法准确表达对应参数的语义,修改为target。 want命名无法准确表达对应参数的语义,修改为target。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配变更接口。变更前的接口会出现告警,虽然可以通过编译,但是已经不能正常使用其功能。 基于此前版本开发的应用,需适配变更接口。变更前的接口会出现告警,虽然可以通过编译,但是已经不能正常使用其功能。
**关键的接口/组件变更** **关键的接口/组件变更**
- 涉及接口 - 涉及接口
interface PushParameterForStage { interface PushParameterForStage {
owner: Want; owner: Want;
target: Want; target: Want;
name: string; name: string;
data: KVObject; data: KVObject;
extraData: KVObject; extraData: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function push(param: PushParameterForStage, callback: AsyncCallback<void>): void; function push(param: PushParameterForStage, callback: AsyncCallback<void>): void;
interface RequestParameterForStage { interface RequestParameterForStage {
owner: Want; owner: Want;
target: Want; target: Want;
name: string; name: string;
data: KVObject; data: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void; function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void;
- 变更前: - 变更前:
```js ```js
interface PushParameterForStage { interface PushParameterForStage {
owner: Want; owner: Want;
want: Want; want: Want;
name: string; name: string;
data: KVObject; data: KVObject;
extraData: KVObject; extraData: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function push(param: PushParameterForStage, callback: AsyncCallback<void>): void; function push(param: PushParameterForStage, callback: AsyncCallback<void>): void;
interface RequestParameterForStage { interface RequestParameterForStage {
owner: Want; owner: Want;
want: Want; want: Want;
name: string; name: string;
data: KVObject; data: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void; function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void;
``` ```
- 变更后: - 变更后:
```js ```js
interface PushParameterForStage { interface PushParameterForStage {
owner: Want; owner: Want;
target: Want; target: Want;
name: string; name: string;
data: KVObject; data: KVObject;
extraData: KVObject; extraData: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function push(param: PushParameterForStage, callback: AsyncCallback<void>): void; function push(param: PushParameterForStage, callback: AsyncCallback<void>): void;
interface RequestParameterForStage { interface RequestParameterForStage {
owner: Want; owner: Want;
target: Want; target: Want;
name: string; name: string;
data: KVObject; data: KVObject;
jsonPath?: string; jsonPath?: string;
} }
function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void; function request(param: RequestParameterForStage, callback: AsyncCallback<RequestCallbackParameters>): void;
``` ```
**适配指导** **适配指导**
使用变更后的接口,示例代码如下: 使用变更后的接口,示例代码如下:
- 变更前: - 变更前:
```js ```js
import pluginComponentManager from '@ohos.pluginComponent' import pluginComponentManager from '@ohos.pluginComponent'
pluginComponentManager.push({ pluginComponentManager.push({
owner:{ owner:{
bundleName:"com.example.provider", bundleName:"com.example.provider",
abilityName:"com.example.provider.MainAbility" abilityName:"com.example.provider.MainAbility"
}, },
want: { want: {
bundleName: "com.example.provider", bundleName: "com.example.provider",
abilityName: "com.example.provider.MainAbility", abilityName: "com.example.provider.MainAbility",
}, },
name: "ets/pages/plugin2.js", name: "ets/pages/plugin2.js",
data: { data: {
"js": "ets/pages/plugin.js", "js": "ets/pages/plugin.js",
"key_1": 1111, "key_1": 1111,
}, },
extraData: { extraData: {
"extra_str": "this is push event" "extra_str": "this is push event"
}, },
jsonPath: "", jsonPath: "",
}, },
(err, data) => { (err, data) => {
console.log("push_callback:err: " ,JSON.stringify(err)); console.log("push_callback:err: " ,JSON.stringify(err));
console.log("push_callback:data: " , JSON.stringify(data)); console.log("push_callback:data: " , JSON.stringify(data));
console.log("push_callback: push ok!"); console.log("push_callback: push ok!");
} }
) )
pluginComponentManager.request({ pluginComponentManager.request({
owner:{ owner:{
bundleName:"com.example.provider", bundleName:"com.example.provider",
abilityName:"com.example.provider.MainAbility" abilityName:"com.example.provider.MainAbility"
}, },
want: { want: {
bundleName: "com.example.provider", bundleName: "com.example.provider",
abilityName: "ets/pages/plugin2.js", abilityName: "ets/pages/plugin2.js",
}, },
name: "plugintemplate", name: "plugintemplate",
data: { data: {
"key_1": " myapplication plugin component test", "key_1": " myapplication plugin component test",
"key_2": 123456 "key_2": 123456
}, },
jsonPath: "", jsonPath: "",
}, },
(err, data) => { (err, data) => {
console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability) console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability)
console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source) console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source)
} }
) )
``` ```
- 变更后: - 变更后:
```js ```js
import pluginComponentManager from '@ohos.pluginComponent' import pluginComponentManager from '@ohos.pluginComponent'
pluginComponentManager.push({ pluginComponentManager.push({
owner:{ owner:{
bundleName:"com.example.provider", bundleName:"com.example.provider",
abilityName:"com.example.provider.MainAbility" abilityName:"com.example.provider.MainAbility"
}, },
target: { target: {
bundleName: "com.example.provider", bundleName: "com.example.provider",
abilityName: "com.example.provider.MainAbility", abilityName: "com.example.provider.MainAbility",
}, },
name: "ets/pages/plugin2.js", name: "ets/pages/plugin2.js",
data: { data: {
"js": "ets/pages/plugin.js", "js": "ets/pages/plugin.js",
"key_1": 1111, "key_1": 1111,
}, },
extraData: { extraData: {
"extra_str": "this is push event" "extra_str": "this is push event"
}, },
jsonPath: "", jsonPath: "",
}, },
(err, data) => { (err, data) => {
console.log("push_callback:err: " ,JSON.stringify(err)); console.log("push_callback:err: " ,JSON.stringify(err));
console.log("push_callback:data: " , JSON.stringify(data)); console.log("push_callback:data: " , JSON.stringify(data));
console.log("push_callback: push ok!"); console.log("push_callback: push ok!");
} }
) )
pluginComponentManager.request({ pluginComponentManager.request({
owner:{ owner:{
bundleName:"com.example.provider", bundleName:"com.example.provider",
abilityName:"com.example.provider.MainAbility" abilityName:"com.example.provider.MainAbility"
}, },
target: { target: {
bundleName: "com.example.provider", bundleName: "com.example.provider",
abilityName: "ets/pages/plugin2.js", abilityName: "ets/pages/plugin2.js",
}, },
name: "plugintemplate", name: "plugintemplate",
data: { data: {
"key_1": " myapplication plugin component test", "key_1": " myapplication plugin component test",
"key_2": 123456 "key_2": 123456
}, },
jsonPath: "", jsonPath: "",
}, },
(err, data) => { (err, data) => {
console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability) console.log("request_callback: componentTemplate.ability=" + data.componentTemplate.ability)
console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source) console.log("request_callback: componentTemplate.source=" + data.componentTemplate.source)
} }
) )
``` ```
...@@ -232,14 +232,67 @@ module.json配置文件中的ability的[name](../../../application-dev/quick-sta ...@@ -232,14 +232,67 @@ module.json配置文件中的ability的[name](../../../application-dev/quick-sta
**适配指导**<br> **适配指导**<br>
删除module.json中[distroFilter](../../../application-dev/quick-start/module-configuration-file.md)标签,使用distributionFilter替代 删除module.json中[distroFilter](../../../application-dev/quick-start/module-configuration-file.md)标签,使用distributionFilter替代
## cl.bundlemanager.20 module.json配置文件中launchType标签standard模式修改为multiton ## cl.bundlemanager.20 module.json配置文件中launchTypede标签standard模式修改为multiton
删除module.json中[launchType](../../../application-dev/quick-start/module-configuration-file.md)标签的standard模式修改为multiton 删除module.json中[launchType](../../../application-dev/quick-start/module-configuration-file.md)标签的standard模式修改为multiton
**适配指导**<br> **适配指导**<br>
删除module.json中[launchType](../../../application-dev/quick-start/module-configuration-file.md)标签的standard模式,使用multiton替代 删除module.json中[launchType](../../../application-dev/quick-start/module-configuration-file.md)标签的standard模式,使用multiton替代
## cl.bundlemanager.21 module.json配置文件中abilities的标签visible修改为exported ## cl.bundlemanager.21 app.json配置文件删除atomicService标签
module.json中[abilities](../../../application-dev/quick-start/module-configuration-file.md)的标签visible修改为exported,表示当前ability是否支持导出,被其他的ability使用。 删除配置文件app.json中atomicService标签
**变更影响**<br>
删除配置文件app.json中atomicService标签,IDE中不再支持配置该标签,使用该标签会导致IDE编译报错
**适配指导**<br>
删除atomicService标签
## cl.bundlemanager.22 app.json配置文件新增bundleType标签
配置文件app.json中新增bundleType标签
**变更影响**<br>
现存的元服务([installationFree](../../../application-dev/quick-start/module-configuration-file.md)为true),必须在app.json中指定bundleType为atomicService,否则打包失败。
**适配指导**<br>
新增[bundleType](../../../application-dev/quick-start/app-configuration-file.md)标签。该标签为可缺省(缺省值为app)。该标签需要和module.json中[installationFree](../../../application-dev/quick-start/module-configuration-file.md)字段保持一一对应,其相应规则为:
- 当bundleType为app时,installationFree必须为false。
- 当bundleType为atomicService时,installationFree必须为true。
## cl.bundlemanager.23 包管理ApplicationInfo结构体中删除split字段。
包管理[ApplicationInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)结构体中删除split字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了split的,会编译失败。
**关键的接口/组件变更**<br>
包管理[ApplicationInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ApplicationInfo.d.ts)结构体中删除split字段。
**适配指导**<br>
删除ApplicationInfo结构体中的split字段。目前元服务中stage模型强制分包,不支持不分包。
## cl.bundlemanager.24 包管理HapModuleInfo结构体中删除atomicServiceModuleType字段。
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了atomicServiceModuleType的,会编译失败。
**关键的接口/组件变更**<br>
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**适配指导**<br>
删除[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的atomicServiceModuleType字段。判断atomicServiceModuleType字段的部分,用[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的moduleType代替。
## cl.bundlemanager.25 包管理删除AtomicServiceModuleType枚举值。
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了atomicServiceModuleType的,会编译失败。
**关键的接口/组件变更**<br>
包管理[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中删除atomicServiceModuleType字段。
**适配指导**<br> **适配指导**<br>
删除module.json中[abilities](../../../application-dev/quick-start/module-configuration-file.md)的visible标签,使用exported标签替代 删除[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的atomicServiceModuleType字段。判断atomicServiceModuleType字段的部分,用[HapModuleInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/HapModuleInfo.d.ts)结构体中的moduleType代替。
\ No newline at end of file \ No newline at end of file
# 资源调度子系统ChangeLog # 资源调度子系统ChangeLog
## cl.resourceschedule.workScheduler ## cl.resourceschedule.workScheduler
修改parameters属性值的数据类型,不允许使用any类型,支持number、string、boolean三种类型。 修改parameters属性值的数据类型,不允许使用any类型,支持number、string、boolean三种类型。
**变更影响** **变更影响**
基于OpenHarmony3.2.10.7及之后的SDK版本开发的应用,parameters属性值的数据类型不允许使用any类型,仅支持number、string、boolean三种类型,否则将编译报错。 基于OpenHarmony3.2.10.7及之后的SDK版本开发的应用,parameters属性值的数据类型不允许使用any类型,仅支持number、string、boolean三种类型,否则将编译报错。
**关键接口/组件变更** **关键接口/组件变更**
@ohos.resourceschedule.workScheduler.d.ts中的parameters属性变更。 @ohos.resourceschedule.workScheduler.d.ts中的parameters属性变更。
| 类名 | 接口类型 | 变更前声明 | 变更后声明 | | 类名 | 接口类型 | 变更前声明 | 变更后声明 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | parameters?: {[key: string]: number | string | boolean} | | workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | parameters?: {[key: string]: number | string | boolean} |
**适配指导**<br> **适配指导**<br>
parameters属性使用{[key: string]: number | string | boolean}数据类型。 parameters属性使用{[key: string]: number | string | boolean}数据类型。
\ No newline at end of file
# util系统JS API变更Changelog # util系统JS API变更Changelog
OpenHarmony 3.2.10.7(Mr)版本相较于OpenHarmony 3.2.beta4版本,util子系统的API变更如下 OpenHarmony 3.2.10.7(Mr)版本相较于OpenHarmony 3.2.beta4版本,util子系统的API变更如下
## cl.util.1.randomUUID接口名变更 ## cl.util.1.randomUUID接口名变更
util子系统randomUUID函数名存在变更: util子系统randomUUID函数名存在变更:
function randomUUID(entropyCache?: boolean): string 改为 function generateRandomUUID(entropyCache?: boolean): string 函数名由原来的randomUUID改为generateRandomUUID。 function randomUUID(entropyCache?: boolean): string 改为 function generateRandomUUID(entropyCache?: boolean): string 函数名由原来的randomUUID改为generateRandomUUID。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。 影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。
**关键的接口/组件变更** **关键的接口/组件变更**
| 模块名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 方法/属性/枚举/常量 | 变更类型 |
| :---------- | ------------------- | ------- | | :---------- | ------------------- | ------- |
| @ohos.util | function randomUUID(entropyCache?: boolean): string | 删除 | | @ohos.util | function randomUUID(entropyCache?: boolean): string | 删除 |
| @ohos.util | function generateRandomUUID(entropyCache?: boolean): string| 变更 | | @ohos.util | function generateRandomUUID(entropyCache?: boolean): string| 变更 |
**适配指导** **适配指导**
应用中使用generateRandomUUID可参考下列代码 应用中使用generateRandomUUID可参考下列代码
示例: 示例:
```ts ```ts
import util from '@ohos.util' import util from '@ohos.util'
let uuid = util.generateRandomUUID(true); let uuid = util.generateRandomUUID(true);
console.log("RFC 4122 Version 4 UUID:" + uuid); console.log("RFC 4122 Version 4 UUID:" + uuid);
// 输出: // 输出:
// RFC 4122 Version 4 UUID:88368f2a-d5db-47d8-a05f-534fab0a0045 // RFC 4122 Version 4 UUID:88368f2a-d5db-47d8-a05f-534fab0a0045
``` ```
## cl.util.2.randomBinaryUUID接口名变更 ## cl.util.2.randomBinaryUUID接口名变更
util子系统randomBinaryUUID函数名存在变更: util子系统randomBinaryUUID函数名存在变更:
function randomBinaryUUID(entropyCache?: boolean): Uint8Array 改为 function generateRandomBinaryUUID(entropyCache?: boolean): Uint8Array 函数名由原来的randomBinaryUUID改为generateRandomBinaryUUID。 function randomBinaryUUID(entropyCache?: boolean): Uint8Array 改为 function generateRandomBinaryUUID(entropyCache?: boolean): Uint8Array 函数名由原来的randomBinaryUUID改为generateRandomBinaryUUID。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。 影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。
**关键的接口/组件变更** **关键的接口/组件变更**
| 模块名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 方法/属性/枚举/常量 | 变更类型 |
| :---------- | ------------------- | ------- | | :---------- | ------------------- | ------- |
| @ohos.util | function randomBinaryUUID(entropyCache?: boolean): Uint8Array; | 删除 | | @ohos.util | function randomBinaryUUID(entropyCache?: boolean): Uint8Array; | 删除 |
| @ohos.util | function generateRandomBinaryUUID(entropyCache?: boolean): Uint8Array| 变更 | | @ohos.util | function generateRandomBinaryUUID(entropyCache?: boolean): Uint8Array| 变更 |
**适配指导** **适配指导**
应用中使用generateRandomBinaryUUID可参考下列代码 应用中使用generateRandomBinaryUUID可参考下列代码
示例: 示例:
```ts ```ts
import util from '@ohos.util' import util from '@ohos.util'
let uuid = util.generateRandomBinaryUUID(true); let uuid = util.generateRandomBinaryUUID(true);
console.log(JSON.stringify(uuid)); console.log(JSON.stringify(uuid));
// 输出: // 输出:
// 138,188,43,243,62,254,70,119,130,20,235,222,199,164,140,150 // 138,188,43,243,62,254,70,119,130,20,235,222,199,164,140,150
``` ```
## cl.util.3.LRUCache类contains接口参数类型变更 ## cl.util.3.LRUCache类contains接口参数类型变更
util子系统LRUCache类contains接口参数类型变更: util子系统LRUCache类contains接口参数类型变更:
contains(key: object): boolean 改为 contains(key: K): boolean 参数类型由原来的object改为K。 contains(key: object): boolean 改为 contains(key: K): boolean 参数类型由原来的object改为K。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。 影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。
**关键的接口/组件变更** **关键的接口/组件变更**
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| :-------- | ---------| -------------------------------- | -------- | | :-------- | ---------| -------------------------------- | -------- |
| @ohos.util | LRUCache | contains(key: object): boolean | 删除 | | @ohos.util | LRUCache | contains(key: object): boolean | 删除 |
| @ohos.util | LRUCache | contains(key: K): boolean | 变更 | | @ohos.util | LRUCache | contains(key: K): boolean | 变更 |
**适配指导** **适配指导**
应用中使用contains函数可参考下列代码 应用中使用contains函数可参考下列代码
示例: 示例:
```ts ```ts
import util from '@ohos.util' import util from '@ohos.util'
let pro = new util.LRUCache(); let pro = new util.LRUCache();
pro.put(2,10); pro.put(2,10);
let obj = {1:"key"}; let obj = {1:"key"};
let result = pro.contains(obj); let result = pro.contains(obj);
``` ```
\ No newline at end of file
# web子系统ChangeLog # web子系统ChangeLog
OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更如下。 OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变更如下。
## cl.web.1 HitTestTypeV9命名变更 ## cl.web.1 HitTestTypeV9命名变更
...@@ -8,7 +8,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更 ...@@ -8,7 +8,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更
**变更影响** **变更影响**
枚举类HitTestTypeV9,以及使用HitTestTypeV9作为参数或返回值的接口,在4.0.3.2版本及后续版本中无法继续正常使用。 枚举类HitTestTypeV9,以及使用HitTestTypeV9作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -38,7 +38,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更 ...@@ -38,7 +38,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更
**变更影响** **变更影响**
结构体HeaderV9,以及使用HeaderV9作为参数或返回值的接口,在4.0.3.2版本及后续版本中无法继续正常使用。 结构体HeaderV9,以及使用HeaderV9作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -68,7 +68,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更 ...@@ -68,7 +68,7 @@ OpenHarmony 4.0.3.2 版本相较于OpenHarmony 之前的版本,web的API变更
**变更影响** **变更影响**
结构体HitTestValue,以及使用HitTestValue作为参数或返回值的接口,在4.0.3.2版本及后续版本中无法继续正常使用。 结构体HitTestValue,以及使用HitTestValue作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -128,7 +128,7 @@ loadUrl接口中的参数headers,由于其类型的命名规范问题,类型 ...@@ -128,7 +128,7 @@ loadUrl接口中的参数headers,由于其类型的命名规范问题,类型
**变更影响** **变更影响**
loadUrl接口若使用了headers参数,则在4.0.3.2版本及后续版本中无法继续正常使用。 loadUrl接口若使用了headers参数,则在3.2.10.7版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -158,7 +158,7 @@ getHitTest接口中的返回值,由于其类型的命名规范问题,变更为 ...@@ -158,7 +158,7 @@ getHitTest接口中的返回值,由于其类型的命名规范问题,变更为
**变更影响** **变更影响**
getHitTest接口,在4.0.3.2版本及后续版本中无法继续正常使用。 getHitTest接口,在3.2.10.7版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
......
# Readme
- [元能力](changelogs-ability.md)
- [帐号](changelogs-account_os_account.md)
- [ArkUI](changelogs-arkui.md)
- [多媒体-相机](changelogs-camera.md)
- [设备管理](changelogs-device-manager.md)
- [USB](changelogs-device-usb.md)
- [分布式调度](changelogs-dmsfwk.md)
- [分布式软总线](changelogs-dsoftbus.md)
- [定制管理](changelogs-enterprise_device_management.md)
- [文件管理](changelogs-filemanagement.md)
- [位置服务](changelogs-geolocation.md)
- [全球化](changelogs-global.md)
- [输入法框架](changelogs-inputmethod-framworks.md)
- [多媒体](changelogs-multimedia.md)
- [多模输入](changelogs-multimodalinput.md)
- [事件通知](changelogs-notification.md)
- [电源管理](changelogs-power.md)
- [上传下载](changelogs-request.md)
- [资源管理](changelogs-resource-manager.md)
- [资源调度](changelogs-resourceschedule.md)
- [电话服务](changelogs-telephony.md)
- [测试](changelogs-testfwk_arkxtest.md)
- [主题](changelogs-theme.md)
- [用户IAM](changelogs-useriam.md)
- [元能力-WantAgent](changelogs-wantAgent.md)
- [Web](changelogs-web.md)
- [基础通信-WIFI](changelogs-wifi.md)
# 帐号子系统changeLog # 帐号子系统changeLog
## cl.account_os_account.1 变更错误码定义及其返回方式 ## cl.account_os_account.1 变更错误码定义及其返回方式
针对帐号子系统API存在错误码定义不统一和抛出方式不符合OpenHarmony错误码规范的问题,从API9开始作以下变更: 针对帐号子系统API存在错误码定义不统一和抛出方式不符合OpenHarmony错误码规范的问题,从API9开始作以下变更:
- 新增统一的错误码定义: - 新增统一的错误码定义:
- [帐号公共错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errorcode-account.md) [帐号公共错误码](../../../application-dev/reference/errorcodes/errorcode-account.md)
- [应用帐号错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errorcode-account.md)
- 按以下方式返回错误码:
- 按以下方式返回错误码: - 异步接口:错误信息通过AsyncCallback或Promise的error对象返回。其中,参数类型和数量错误信息,通过抛出异常的方式返回。
- 异步接口:错误信息通过AsyncCallback或Promise的error对象返回。其中,参数类型和数量错误信息,通过抛出异常的方式返回。 - 同步接口:错误信息通过抛出异常的方式返回。
- 同步接口:错误信息通过抛出异常的方式返回。
**变更影响**
**变更影响**
基于此前版本开发的应用,需适配变更后的新错误码和错误信息返回方式,否则会影响原有业务逻辑。
基于此前版本开发的应用,需适配变更后的新错误码和错误信息返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更**
**关键接口/组件变更**
以下接口涉及新错误码和错误信息返回方式变更:
以下接口涉及新错误码和错误信息返回方式变更: - class AccountManager
- class AccountManager - activateOsAccount(localId: number, callback: AsyncCallback&lt;void&gt;): void;
- activateOsAccount(localId: number, callback: AsyncCallback&lt;void&gt;): void; - removeOsAccount(localId: number, callback: AsyncCallback&lt;void&gt;): void;
- removeOsAccount(localId: number, callback: AsyncCallback&lt;void&gt;): void; - setOsAccountConstraints(localId: number, constraints: Array&lt;string&gt;, enable: boolean, callback: AsyncCallback&lt;void&gt;): void;
- setOsAccountConstraints(localId: number, constraints: Array&lt;string&gt;, enable: boolean, callback: AsyncCallback&lt;void&gt;): void; - setOsAccountName(localId: number, localName: string, callback: AsyncCallback&lt;void&gt;): void;
- setOsAccountName(localId: number, localName: string, callback: AsyncCallback&lt;void&gt;): void; - queryMaxOsAccountNumber(callback: AsyncCallback&lt;number&gt;): void;
- queryMaxOsAccountNumber(callback: AsyncCallback&lt;number&gt;): void; - queryAllCreatedOsAccounts(callback: AsyncCallback&lt;Array&lt;OsAccountInfo&gt;&gt;): void;
- queryAllCreatedOsAccounts(callback: AsyncCallback&lt;Array&lt;OsAccountInfo&gt;&gt;): void; - createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback&lt;OsAccountInfo&gt;): void;
- createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback&lt;OsAccountInfo&gt;): void; - createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback&lt;OsAccountInfo&gt;): void;
- createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback&lt;OsAccountInfo&gt;): void; - queryOsAccountById(localId: number, callback: AsyncCallback&lt;OsAccountInfo&gt;): void;
- queryOsAccountById(localId: number, callback: AsyncCallback&lt;OsAccountInfo&gt;): void; - getOsAccountProfilePhoto(localId: number, callback: AsyncCallback&lt;string&gt;): void;
- getOsAccountProfilePhoto(localId: number, callback: AsyncCallback&lt;string&gt;): void; - setOsAccountProfilePhoto(localId: number, photo: string, callback: AsyncCallback&lt;void&gt;): void;
- setOsAccountProfilePhoto(localId: number, photo: string, callback: AsyncCallback&lt;void&gt;): void; - on(type: 'activate' | 'activating', name: string, callback: Callback&lt;number&gt;): void;
- on(type: 'activate' | 'activating', name: string, callback: Callback&lt;number&gt;): void; - off(type: 'activate' | 'activating', name: string, callback?: Callback&lt;number&gt;): void;
- off(type: 'activate' | 'activating', name: string, callback?: Callback&lt;number&gt;): void; - isMainOsAccount(callback: AsyncCallback&lt;boolean&gt;): void;
- isMainOsAccount(callback: AsyncCallback&lt;boolean&gt;): void; - queryOsAccountConstraintSourceTypes(localId: number, constraint: string, callback: AsyncCallback&lt;Array&lt;ConstraintSourceTypeInfo&gt;&gt;): void;
- queryOsAccountConstraintSourceTypes(localId: number, constraint: string, callback: AsyncCallback&lt;Array&lt;ConstraintSourceTypeInfo&gt;&gt;): void; - class UserAuth
- class UserAuth - constructor();
- constructor(); - getVersion(): number;
- getVersion(): number; - getAvailableStatus(authType: AuthType, authTrustLevel: AuthTrustLevel): number;
- getAvailableStatus(authType: AuthType, authTrustLevel: AuthTrustLevel): number; - getProperty(request: GetPropertyRequest, callback: AsyncCallback&lt;ExecutorProperty&gt;): void;
- getProperty(request: GetPropertyRequest, callback: AsyncCallback&lt;ExecutorProperty&gt;): void; - setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;number&gt;): void;
- setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;number&gt;): void; - auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array;
- auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; - authUser(userId: number, challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array;
- authUser(userId: number, challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; - cancelAuth(contextID: Uint8Array): number;
- cancelAuth(contextID: Uint8Array): number; - class PINAuth
- class PINAuth - constructor();
- constructor(); - registerInputer(inputer: IInputer): boolean;
- registerInputer(inputer: IInputer): boolean; - unregisterInputer(authType: AuthType): void;
- unregisterInputer(authType: AuthType): void; - class UserIdentityManager
- class UserIdentityManager - constructor();
- constructor(); - openSession(callback: AsyncCallback&lt;Uint8Array&gt;): void;
- openSession(callback: AsyncCallback&lt;Uint8Array&gt;): void; - addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void;
- addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; - updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void;
- updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; - closeSession(): void;
- closeSession(): void; - cancel(challenge: Uint8Array): number;
- cancel(challenge: Uint8Array): number; - delUser(token: Uint8Array, callback: IIdmCallback): void;
- delUser(token: Uint8Array, callback: IIdmCallback): void; - delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): void;
- delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): void; - getAuthInfo(callback: AsyncCallback&lt;Array&lt;EnrolledCredInfo&gt;&gt;): void;
- getAuthInfo(callback: AsyncCallback&lt;Array&lt;EnrolledCredInfo&gt;&gt;): void; - interface IInputData
- interface IInputData - onSetData: (authSubType: AuthSubType, data: Uint8Array) =&gt; void;
- onSetData: (authSubType: AuthSubType, data: Uint8Array) =&gt; void;
**适配指导**
**适配指导**
异步接口的错误信息处理逻辑以activateOsAccount为例,示例代码如下:
异步接口的错误信息处理逻辑以activateOsAccount为例,示例代码如下:
```ts
```ts import account_osAccount from "@ohos.account.osAccount"
import account_osAccount from "@ohos.account.osAccount" let accountMgr = account_osAccount.getAccountManager()
let accountMgr = account_osAccount.getAccountManager() let callbackFunc = (err) => {
let callbackFunc = (err) => { if (err != null) { // handle the bussiness error
if (err != null) { // handle the bussiness error console.log("account_osAccount failed, error: " + JSON.stringify(err));
console.log("account_osAccount failed, error: " + JSON.stringify(err)); } else {
} else { console.log("account_osAccount successfully");
console.log("account_osAccount successfully"); }
} }
} try {
try { accountMgr.activateOsAccount("100", callbackFunc);
accountMgr.activateOsAccount("100", callbackFunc); } catch (err) { // handle the parameter type error
} catch (err) { // handle the parameter type error console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err));
console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err)); }
} try {
try { accountMgr.activateOsAccount();
accountMgr.activateOsAccount(); } catch (err) { // handle the parameter number error
} catch (err) { // handle the parameter number error console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err));
console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err)); }
} ```
```
同步接口的错误信息处理以registerInputer为例,示例代码如下:
同步接口的错误信息处理以registerInputer为例,示例代码如下:
```ts
```ts import account_osAccount from "@ohos.account.osAccount"
import account_osAccount from "@ohos.account.osAccount" let pinAuth = new account_osAccount.PINAuth()
let pinAuth = new account_osAccount.PINAuth() try {
try { pinAuth.registerInputer({})
pinAuth.registerInputer({}) } catch (err) { // handle the parameter type error
} catch (err) { // handle the parameter type error console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err));
console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err)); }
} try {
try { pinAuth.registerInputer()
pinAuth.registerInputer() } catch (err) { // handle the parameter number error
} catch (err) { // handle the parameter number error console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err));
console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err)); }
} ```
```
# 帐号子系统ChangeLog
## cl.account_os_account.2 帐号SystemAPI错误信息返回方式变更
已发布的部分帐号SystemAPI使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。从API9开始作以下变更:
异步接口:通过AsyncCallback或Promise的error对象返回错误信息。
同步接口:通过抛出异常的方式返回错误信息。
**变更影响**
基于此前版本开发的应用,需适配变更接口的错误信息返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更**
变更前:
- class UserAuth
- setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;number&gt;): void;
- setProperty(request: SetPropertyRequest): Promise&lt;number&gt;;
- cancelAuth(contextID: Uint8Array): number;
- class PINAuth
- registerInputer(inputer: Inputer): boolean;
- UserIdentityManager
- cancel(challenge: Uint8Array): number;
变更后:
- class UserAuth
- setProperty(request: SetPropertyRequest, callback: AsyncCallback&lt;void&gt;): void;
- setProperty(request: SetPropertyRequest): Promise&lt;void&gt;;
- cancelAuth(contextID: Uint8Array): void;
- class PINAuth
- registerInputer(inputer: Inputer): void;
- UserIdentityManager
- cancel(challenge: Uint8Array): void;
**适配指导**
异步接口以setProperty为例,示例代码如下:
```
import account_osAccount from "@ohos.account.osAccount"
userAuth.setProperty({
authType: account_osAccount.AuthType.PIN,
key: account_osAccount.SetPropertyType.INIT_ALGORITHM,
setInfo: new Uint8Array([0])
}, (err) => {
if (err) {
console.log("setProperty failed, error: " + JSON.stringify(err));
} else {
console.log("setProperty successfully");
}
});
userAuth.setProperty({
authType: account_osAccount.AuthType.PIN,
key: account_osAccount.SetPropertyType.INIT_ALGORITHM,
setInfo: new Uint8Array([0])
}).catch((err) => {
if (err) {
console.log("setProperty failed, error: " + JSON.stringify(err));
} else {
console.log("setProperty successfully");
}
});
```
同步接口以registerInputer为例,示例代码如下:
```
import account_osAccount from "@ohos.account.osAccount"
let pinAuth = new account_osAccount.PINAuth()
let inputer = {
onGetData: (authType, passwordRecipient) => {
let password = new Uint8Array([0]);
passwordRecipient.onSetData(authType, password);
}
}
try {
pinAuth.registerInputer(inputer);
} catch (err) {
console.log("registerInputer failed, error: " + JSON.stringify(err));
}
```
## cl.account_os_account.3 应用帐号鉴权服务ACTION定义变更
**变更影响**
基于此前版本开发的应用,需适配修改应用配置文件(FA模型为config.json或Stage模型为module.json5)中的ACTION才能正常对外提供应用鉴权服务。
**关键接口/组件变更**
涉及的常量:
@ohos.ability.wantConstant.ACTION_APP_ACCOUNT_AUTH
变更前:
ACTION_APP_ACCOUNT_AUTH = "account.appAccount.action.auth"
变更后:
ACTION_APP_ACCOUNT_AUTH = "ohos.appAccount.action.auth"
**适配指导**
提供应用帐号鉴权服务的三方应用,需要在相关ServiceAbility的配置文件(FA模型为config.json或Stage模型为module.json5)中适配变更后的应用帐号认证ACTION,示例如下:
```
"abilities": [
{
"name": "ServiceAbility",
"srcEnty": "./ets/ServiceAbility/ServiceAbility.ts",
...
"visible": true,
"skills": {
{
"actions": [
"ohos.appAccount.action.auth"
]
}
}
}]
}
```
# 媒体子系统JS API变更Changelog # 媒体子系统JS API变更Changelog
OpenHarmony3.2 Beta4版本相较于OpenHarmony3.2 Beta3版本,媒体子系统camera部件API变更如下
## camera接口变更 ## camera接口变更
基于以下原因新增部分功能接口以及废弃部分接口: 基于以下原因新增部分功能接口以及废弃部分接口:
1. 提升开发者使用相机接口的便利。 1. 提升开发者使用相机接口的便利。
......
# USB管理 changeLog # USB管理 changeLog
## cl.usb_manager.1 API错误信息返回方式变更 ## cl.usb_manager.1 API错误信息返回方式变更
USB管理接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。从API9开始作出变更,选择通过抛出异常的方式返回错误信息。 USB管理接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。从API9开始作出变更,选择通过抛出异常的方式返回错误信息。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配接口的错误信息返回方式,否则会影响原有业务逻辑。 基于此前版本开发的应用,需适配接口的错误信息返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
USB模块名由@ohos.usb.d.ts 变更为 @ohos.usbV9.d.ts,模块内所有接口均增加错误码处理。 USB模块名由@ohos.usb.d.ts 变更为 @ohos.usbV9.d.ts,模块内所有接口均增加错误码处理。
**适配指导** **适配指导**
接口以getDevices为例,示例代码如下: 接口以getDevices为例,示例代码如下:
```ts ```ts
import usbV9 from '@ohos.usbV9' import usbV9 from '@ohos.usbV9'
try { try {
usbV9.getDevices(); // 如果给该接口传入不合适的参数,则会抛出异常 usbV9.getDevices(); // 如果给该接口传入不合适的参数,则会抛出异常
} catch (err) { } catch (err) {
console.error("getDevices errCode:" + err.code + ",errMessage:" + err.message); console.error("getDevices errCode:" + err.code + ",errMessage:" + err.message);
} }
``` ```
\ No newline at end of file
...@@ -99,4 +99,24 @@ continuationManager.off 设备取消选择事件 ...@@ -99,4 +99,24 @@ continuationManager.off 设备取消选择事件
} catch (err) { } catch (err) {
console.error('off failed, cause: ' + JSON.stringify(err)); console.error('off failed, cause: ' + JSON.stringify(err));
} }
``` ```
\ No newline at end of file
## cl.DistributedManagerService.2 continuationManager接口新增DATASYNC权限校验
此前版本continuationManager接口未对调用方进行校验,不符合OpenHarmony的API接口规范。
已做出以下变更:调用方使用continuationManager前需提前申请"ohos.permission.DISTRIBUTED_DATASYNC"权限。
**变更影响**
基于此前版本开发的应用,需提前申请"ohos.permission.DISTRIBUTED_DATASYNC"权限,否则会影响原有业务逻辑。
**关键的接口/组件变更**
涉及接口
- continuationManager.registerContinuation;
- continuationManager.on;
- continuationManager.off;
- continuationManager.unregisterContinuation;
- continuationManager.updateContinuationState;
- continuationManager.startContinuationDeviceManager;
\ No newline at end of file
# 软总线子系统Changelog # 软总线子系统Changelog
## IPC&RPC API支持异常处理方式和支持传入布尔值与数值选择同步或异步方式发送信息变更 ## IPC&RPC API支持异常处理方式和支持传入布尔值与数值选择同步或异步方式发送信息变更
1. 软总线IPC&RPC部分接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误规范; 1. 软总线IPC&RPC部分接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误规范;
2. 支持传入布尔值选择同步或异步方式发送信息。 2. 支持传入布尔值选择同步或异步方式发送信息。
#### 变更影响 #### 变更影响
此版本兼容之前的应用开发,不需要适配,后续可调用新增接口支持以下两个变更: 此版本兼容之前的应用开发,不需要适配,后续可调用新增接口支持以下两个变更:
1. 支持异常处理并返回错误码; 1. 支持异常处理并返回错误码;
2. 提供通过布尔值或通过0与非0数字选择同步或异步发消息。 2. 提供通过布尔值或通过0与非0数字选择同步或异步发消息。
#### 关键接口/组件变更 #### 关键接口/组件变更
为适配统一的API异常处理方式,对IPC&RPC相关接口进行废弃,并新增对应接口和方法。新增接口支持统一的错误码异常处理规范,功能上与原接口保持一致。 为适配统一的API异常处理方式,对IPC&RPC相关接口进行废弃,并新增对应接口和方法。新增接口支持统一的错误码异常处理规范,功能上与原接口保持一致。
| 类名 | 废弃接口 | 新增替换类名 | 新增替代接口 | | 类名 | 废弃接口 | 新增替换类名 | 新增替代接口 |
| ------------ | ------------ | ------------ | ------------ | | ------------ | ------------ | ------------ | ------------ |
| MessageParcel | static create(): MessageParcel | MessageSequence | static create(): MessageSequence | | MessageParcel | static create(): MessageParcel | MessageSequence | static create(): MessageSequence |
| MessageParcel | reclaim(): void | MessageSequence | reclaim(): void | | MessageParcel | reclaim(): void | MessageSequence | reclaim(): void |
| MessageParcel | writeRemoteObject(object: IRemoteObject): boolean| MessageSequence |writeRemoteObject(object: IRemoteObject): void| | MessageParcel | writeRemoteObject(object: IRemoteObject): boolean| MessageSequence |writeRemoteObject(object: IRemoteObject): void|
| MessageParcel | readRemoteObject(): IRemoteObject | MessageSequence | readRemoteObject(): IRemoteObject | | MessageParcel | readRemoteObject(): IRemoteObject | MessageSequence | readRemoteObject(): IRemoteObject |
| MessageParcel | writeInterfaceToken(token: string): boolean | MessageSequence | writeInterfaceToken(token: string): void | | MessageParcel | writeInterfaceToken(token: string): boolean | MessageSequence | writeInterfaceToken(token: string): void |
| MessageParcel | readInterfaceToken(): string | MessageSequence | readInterfaceToken(): string | | MessageParcel | readInterfaceToken(): string | MessageSequence | readInterfaceToken(): string |
| MessageParcel | getSize(): number | MessageSequence | getSize(): number | | MessageParcel | getSize(): number | MessageSequence | getSize(): number |
| MessageParcel | getCapacity(): number | MessageSequence | getCapacity(): number| | MessageParcel | getCapacity(): number | MessageSequence | getCapacity(): number|
| MessageParcel | setSize(size: number): boolean | MessageSequence | setCapacity(size: number): void | | MessageParcel | setSize(size: number): boolean | MessageSequence | setCapacity(size: number): void |
| MessageParcel | getReadableBytes(): number | MessageSequence | getReadableBytes(): number | | MessageParcel | getReadableBytes(): number | MessageSequence | getReadableBytes(): number |
| MessageParcel | getReadPosition(): number | MessageSequence | getReadPosition(): number | | MessageParcel | getReadPosition(): number | MessageSequence | getReadPosition(): number |
| MessageParcel | getWritePosition(): number | MessageSequence | getWritePosition(): number | | MessageParcel | getWritePosition(): number | MessageSequence | getWritePosition(): number |
| MessageParcel | rewindRead(pos: number): boolean | MessageSequence | rewindRead(pos: number): void | | MessageParcel | rewindRead(pos: number): boolean | MessageSequence | rewindRead(pos: number): void |
| MessageParcel | rewindWrite(pos: number): boolean | MessageSequence | rewindWrite(pos: number): void | | MessageParcel | rewindWrite(pos: number): boolean | MessageSequence | rewindWrite(pos: number): void |
| MessageParcel | writeNoException(): void | MessageSequence | writeNoException(): void | | MessageParcel | writeNoException(): void | MessageSequence | writeNoException(): void |
| MessageParcel | readException(): void | MessageSequence | readException(): void | | MessageParcel | readException(): void | MessageSequence | readException(): void |
| MessageParcel | writeByte(val: number): boolean | MessageSequence | writeByte(val: number): void | | MessageParcel | writeByte(val: number): boolean | MessageSequence | writeByte(val: number): void |
| MessageParcel | writeShort(val: number): boolean | MessageSequence | writeShort(val: number): void | | MessageParcel | writeShort(val: number): boolean | MessageSequence | writeShort(val: number): void |
| MessageParcel | writeInt(val: number): boolean | MessageSequence | writeInt(val: number): void | | MessageParcel | writeInt(val: number): boolean | MessageSequence | writeInt(val: number): void |
| MessageParcel | writeLong(val: number): boolean | MessageSequence | writeLong(val: number): void | | MessageParcel | writeLong(val: number): boolean | MessageSequence | writeLong(val: number): void |
| MessageParcel | writeFloat(val: number): boolean | MessageSequence | writeFloat(val: number): void | | MessageParcel | writeFloat(val: number): boolean | MessageSequence | writeFloat(val: number): void |
| MessageParcel | writeDouble(val: number): boolean | MessageSequence | writeDouble(val: number): void | | MessageParcel | writeDouble(val: number): boolean | MessageSequence | writeDouble(val: number): void |
| MessageParcel | writeBoolean(val: boolean): boolean | MessageSequence | writeBoolean(val: boolean): void | | MessageParcel | writeBoolean(val: boolean): boolean | MessageSequence | writeBoolean(val: boolean): void |
| MessageParcel | writeChar(val: number): boolean | MessageSequence | writeChar(val: number): void | | MessageParcel | writeChar(val: number): boolean | MessageSequence | writeChar(val: number): void |
| MessageParcel | writeString(val: string): boolean | MessageSequence | writeString(val: string): void | | MessageParcel | writeString(val: string): boolean | MessageSequence | writeString(val: string): void |
| MessageParcel | writeSequenceable(val: Sequenceable): boolean | MessageSequence | writeParcelable(val: Parcelable): void | | MessageParcel | writeSequenceable(val: Sequenceable): boolean | MessageSequence | writeParcelable(val: Parcelable): void |
| MessageParcel | writeByteArray(byteArray: number[]): boolean | MessageSequence | writeByteArray(byteArray: number[]): void | | MessageParcel | writeByteArray(byteArray: number[]): boolean | MessageSequence | writeByteArray(byteArray: number[]): void |
| MessageParcel | writeShortArray(shortArray: number[]): boolean | MessageSequence | writeShortArray(shortArray: number[]): void | | MessageParcel | writeShortArray(shortArray: number[]): boolean | MessageSequence | writeShortArray(shortArray: number[]): void |
| MessageParcel | writeIntArray(intArray: number[]): boolean | MessageSequence | writeIntArray(intArray: number[]): void | | MessageParcel | writeIntArray(intArray: number[]): boolean | MessageSequence | writeIntArray(intArray: number[]): void |
| MessageParcel | writeLongArray(longArray: number[]): boolean | MessageSequence | writeLongArray(longArray: number[]): void | | MessageParcel | writeLongArray(longArray: number[]): boolean | MessageSequence | writeLongArray(longArray: number[]): void |
| MessageParcel | writeFloatArray(floatArray: number[]): boolean | MessageSequence | writeFloatArray(floatArray: number[]): void | | MessageParcel | writeFloatArray(floatArray: number[]): boolean | MessageSequence | writeFloatArray(floatArray: number[]): void |
| MessageParcel | writeDoubleArray(doubleArray: number[]): boolean | MessageSequence | writeDoubleArray(doubleArray: number[]): void | | MessageParcel | writeDoubleArray(doubleArray: number[]): boolean | MessageSequence | writeDoubleArray(doubleArray: number[]): void |
| MessageParcel | writeBooleanArray(booleanArray: boolean[]): boolean | MessageSequence | writeBooleanArray(booleanArray: boolean[]): void | | MessageParcel | writeBooleanArray(booleanArray: boolean[]): boolean | MessageSequence | writeBooleanArray(booleanArray: boolean[]): void |
| MessageParcel | writeCharArray(charArray: number[]): boolean | MessageSequence | writeCharArray(charArray: number[]): void | | MessageParcel | writeCharArray(charArray: number[]): boolean | MessageSequence | writeCharArray(charArray: number[]): void |
| MessageParcel | writeStringArray(stringArray: string[]): boolean | MessageSequence | writeStringArray(stringArray: string[]): void | | MessageParcel | writeStringArray(stringArray: string[]): boolean | MessageSequence | writeStringArray(stringArray: string[]): void |
| MessageParcel | writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean | MessageSequence | writeParcelableArray(sequenceableArray: Parcelable[]): void | | MessageParcel | writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean | MessageSequence | writeParcelableArray(sequenceableArray: Parcelable[]): void |
| MessageParcel | writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean | MessageSequence | writeRemoteObjectArray(objectArray: IRemoteObject[]): void | | MessageParcel | writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean | MessageSequence | writeRemoteObjectArray(objectArray: IRemoteObject[]): void |
| MessageParcel | readByte(): number | MessageSequence | readByte(): number | | MessageParcel | readByte(): number | MessageSequence | readByte(): number |
| MessageParcel | readShort(): number | MessageSequence | readShort(): number | | MessageParcel | readShort(): number | MessageSequence | readShort(): number |
| MessageParcel | readLong(): number | MessageSequence | readLong(): number | | MessageParcel | readLong(): number | MessageSequence | readLong(): number |
| MessageParcel | readFloat(): number | MessageSequence | readFloat(): number | | MessageParcel | readFloat(): number | MessageSequence | readFloat(): number |
| MessageParcel | readDouble(): number | MessageSequence | readDouble(): number | | MessageParcel | readDouble(): number | MessageSequence | readDouble(): number |
| MessageParcel | readBoolean(): boolean | MessageSequence | readBoolean(): boolean | | MessageParcel | readBoolean(): boolean | MessageSequence | readBoolean(): boolean |
| MessageParcel | readChar(): number | MessageSequence | readChar(): number | | MessageParcel | readChar(): number | MessageSequence | readChar(): number |
| MessageParcel | readString(): string | MessageSequence | readString(): string | | MessageParcel | readString(): string | MessageSequence | readString(): string |
| MessageParcel | readSequenceable(dataIn: Sequenceable) : boolean | MessageSequence | readSequenceable(dataIn: Parcelable) : void | | MessageParcel | readSequenceable(dataIn: Sequenceable) : boolean | MessageSequence | readSequenceable(dataIn: Parcelable) : void |
| MessageParcel | readByteArray(dataIn: number[]) : void | MessageSequence | readByteArray(dataIn: number[]) : void | | MessageParcel | readByteArray(dataIn: number[]) : void | MessageSequence | readByteArray(dataIn: number[]) : void |
| MessageParcel | readByteArray(): number[] | MessageSequence | readByteArray(): number[] | | MessageParcel | readByteArray(): number[] | MessageSequence | readByteArray(): number[] |
| MessageParcel | readShortArray(dataIn: number[]) : void | MessageSequence | readShortArray(dataIn: number[]) : void | | MessageParcel | readShortArray(dataIn: number[]) : void | MessageSequence | readShortArray(dataIn: number[]) : void |
| MessageParcel | readShortArray(): number[] | MessageSequence | readShortArray(): number[] | | MessageParcel | readShortArray(): number[] | MessageSequence | readShortArray(): number[] |
| MessageParcel | readIntArray(dataIn: number[]) : void | MessageSequence | readIntArray(dataIn: number[]) : void | | MessageParcel | readIntArray(dataIn: number[]) : void | MessageSequence | readIntArray(dataIn: number[]) : void |
| MessageParcel | readIntArray() : number[] | MessageSequence | readIntArray() : number[] | | MessageParcel | readIntArray() : number[] | MessageSequence | readIntArray() : number[] |
| MessageParcel | readLongArray(dataIn: number[]) : void | MessageSequence | readLongArray(dataIn: number[]) : void | | MessageParcel | readLongArray(dataIn: number[]) : void | MessageSequence | readLongArray(dataIn: number[]) : void |
| MessageParcel | readLongArray(): number[] | MessageSequence | readLongArray(): number[] | | MessageParcel | readLongArray(): number[] | MessageSequence | readLongArray(): number[] |
| MessageParcel | readFloatArray(dataIn: number[]) : void | MessageSequence | readFloatArray(dataIn: number[]) : void | | MessageParcel | readFloatArray(dataIn: number[]) : void | MessageSequence | readFloatArray(dataIn: number[]) : void |
| MessageParcel | readFloatArray(): number[] | MessageSequence | readFloatArray(): number[] | | MessageParcel | readFloatArray(): number[] | MessageSequence | readFloatArray(): number[] |
| MessageParcel | readDoubleArray(dataIn: number[]) : void | MessageSequence | readDoubleArray(dataIn: number[]) : void | | MessageParcel | readDoubleArray(dataIn: number[]) : void | MessageSequence | readDoubleArray(dataIn: number[]) : void |
| MessageParcel | readDoubleArray(): number[] | MessageSequence | readDoubleArray(): number[] | | MessageParcel | readDoubleArray(): number[] | MessageSequence | readDoubleArray(): number[] |
| MessageParcel | readBooleanArray(dataIn: boolean[]) : void | MessageSequence | readBooleanArray(dataIn: boolean[]) : void | | MessageParcel | readBooleanArray(dataIn: boolean[]) : void | MessageSequence | readBooleanArray(dataIn: boolean[]) : void |
| MessageParcel | readBooleanArray(): boolean[] | MessageSequence | readBooleanArray(): boolean[] | | MessageParcel | readBooleanArray(): boolean[] | MessageSequence | readBooleanArray(): boolean[] |
| MessageParcel | readCharArray(dataIn: number[]) : void | MessageSequence | readCharArray(dataIn: number[]) : void | | MessageParcel | readCharArray(dataIn: number[]) : void | MessageSequence | readCharArray(dataIn: number[]) : void |
| MessageParcel | readCharArray(): number[] | MessageSequence | readCharArray(): number[] | | MessageParcel | readCharArray(): number[] | MessageSequence | readCharArray(): number[] |
| MessageParcel | readStringArray(dataIn: string[]) : void | MessageSequence | readStringArray(dataIn: string[]) : void | | MessageParcel | readStringArray(dataIn: string[]) : void | MessageSequence | readStringArray(dataIn: string[]) : void |
| MessageParcel | readStringArray(): string[] | MessageSequence | readStringArray(): string[] | | MessageParcel | readStringArray(): string[] | MessageSequence | readStringArray(): string[] |
| MessageParcel | readSequenceableArray(sequenceableArray: Sequenceable[]): void | MessageSequence | readSequenceableArray(sequenceableArray: Parcelable[]): void | | MessageParcel | readSequenceableArray(sequenceableArray: Sequenceable[]): void | MessageSequence | readSequenceableArray(sequenceableArray: Parcelable[]): void |
| MessageParcel | readRemoteObjectArray(objects: IRemoteObject[]): void | MessageSequence | readRemoteObjectArray(objects: IRemoteObject[]): void | | MessageParcel | readRemoteObjectArray(objects: IRemoteObject[]): void | MessageSequence | readRemoteObjectArray(objects: IRemoteObject[]): void |
| MessageParcel | readRemoteObjectArray(): IRemoteObject[] | MessageSequence | readRemoteObjectArray(): IRemoteObject[] | | MessageParcel | readRemoteObjectArray(): IRemoteObject[] | MessageSequence | readRemoteObjectArray(): IRemoteObject[] |
| MessageParcel | static closeFileDescriptor(fd: number): void | MessageSequence | static closeFileDescriptor(fd: number): void | | MessageParcel | static closeFileDescriptor(fd: number): void | MessageSequence | static closeFileDescriptor(fd: number): void |
| MessageParcel | static dupFileDescriptor(fd: number) :number | MessageSequence | static dupFileDescriptor(fd: number) :number | | MessageParcel | static dupFileDescriptor(fd: number) :number | MessageSequence | static dupFileDescriptor(fd: number) :number |
| MessageParcel | containFileDescriptors(): boolean | MessageSequence | containFileDescriptors(): boolean | | MessageParcel | containFileDescriptors(): boolean | MessageSequence | containFileDescriptors(): boolean |
| MessageParcel | writeFileDescriptor(fd: number): boolean | MessageSequence | writeFileDescriptor(fd: number): void | | MessageParcel | writeFileDescriptor(fd: number): boolean | MessageSequence | writeFileDescriptor(fd: number): void |
| MessageParcel | readFileDescriptor(): number | MessageSequence | readFileDescriptor(): number | | MessageParcel | readFileDescriptor(): number | MessageSequence | readFileDescriptor(): number |
| MessageParcel | writeAshmem(ashmem: Ashmem): boolean | MessageSequence | writeAshmem(ashmem: Ashmem): void | | MessageParcel | writeAshmem(ashmem: Ashmem): boolean | MessageSequence | writeAshmem(ashmem: Ashmem): void |
| MessageParcel | readAshmem(): Ashmem | MessageSequence | readAshmem(): Ashmem | | MessageParcel | readAshmem(): Ashmem | MessageSequence | readAshmem(): Ashmem |
| MessageParcel | writeRawData(rawData: number[], size: number): boolean | MessageSequence | writeRawData(rawData: number[], size: number): void | | MessageParcel | writeRawData(rawData: number[], size: number): boolean | MessageSequence | writeRawData(rawData: number[], size: number): void |
| MessageParcel | readRawData(size: number): number[] | MessageSequence | readRawData(size: number): number[] | | MessageParcel | readRawData(size: number): number[] | MessageSequence | readRawData(size: number): number[] |
| Sequenceable | marshalling(dataOut: MessageParcel): boolean | Parcelable | marshalling(dataOut: MessageSequence): boolean | | Sequenceable | marshalling(dataOut: MessageParcel): boolean | Parcelable | marshalling(dataOut: MessageSequence): boolean |
| Sequenceable | unmarshalling(dataIn: MessageParcel) : boolean | Parcelable | unmarshalling(dataIn: MessageSequence) : boolean | | Sequenceable | unmarshalling(dataIn: MessageParcel) : boolean | Parcelable | unmarshalling(dataIn: MessageSequence) : boolean |
| SendRequestResult | errCode: number | RequestResult | errCode: number | | SendRequestResult | errCode: number | RequestResult | errCode: number |
| SendRequestResult | code: number | RequestResult | code: number | | SendRequestResult | code: number | RequestResult | code: number |
| SendRequestResult | data: MessageParcel | RequestResult | data: MessageSequence | | SendRequestResult | data: MessageParcel | RequestResult | data: MessageSequence |
| SendRequestResult | reply: MessageParcel | RequestResult | reply: MessageSequence | | SendRequestResult | reply: MessageParcel | RequestResult | reply: MessageSequence |
| IRemoteObject | queryLocalInterface(descriptor: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker | | IRemoteObject | queryLocalInterface(descriptor: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker |
| IRemoteObject | getInterfaceDescriptor(): string | NA | getDescriptor(): string | | IRemoteObject | getInterfaceDescriptor(): string | NA | getDescriptor(): string |
| IRemoteObject | addDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | registerDeathRecipient(recipient: DeathRecipient, flags: number): void | | IRemoteObject | addDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | registerDeathRecipient(recipient: DeathRecipient, flags: number): void |
| IRemoteObject | removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void | | IRemoteObject | removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void |
| IRemoteObject | NA | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> | | IRemoteObject | NA | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> |
| IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption,callback: AsyncCallback<RequestResult>): void | | IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption,callback: AsyncCallback<RequestResult>): void |
| MessageOption | NA | NA | isAsync(): boolean | | MessageOption | NA | NA | isAsync(): boolean |
| MessageOption | NA | NA | setAsync(async: boolean): void | | MessageOption | NA | NA | setAsync(async: boolean): void |
| MessageOption | NA | NA | constructor(async?: boolean) | | MessageOption | NA | NA | constructor(async?: boolean) |
| RemoteObject | queryLocalInterface(descriptor: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker | | RemoteObject | queryLocalInterface(descriptor: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker |
| RemoteObject | attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void | NA | modifyLocalInterface(localInterface: IRemoteBroker, descriptor: string): void | | RemoteObject | attachLocalInterface(localInterface: IRemoteBroker, descriptor: string): void | NA | modifyLocalInterface(localInterface: IRemoteBroker, descriptor: string): void |
| RemoteObject | getInterfaceDescriptor(): string | NA | getDescriptor(): string | | RemoteObject | getInterfaceDescriptor(): string | NA | getDescriptor(): string |
| RemoteObject | onRemoteRequestEx(code : number, data : MessageParcel, reply: MessageParcel, options : MessageOption): boolean&nbsp;\|&nbsp;Promise<boolean> | NA | onRemoteMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): boolean&nbsp;\|&nbsp;Promise<boolean> | | RemoteObject | onRemoteRequestEx(code : number, data : MessageParcel, reply: MessageParcel, options : MessageOption): boolean&nbsp;\|&nbsp;Promise<boolean> | NA | onRemoteMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): boolean&nbsp;\|&nbsp;Promise<boolean> |
| RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> | | RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> |
| RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void | | RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void |
| RemoteProxy | queryLocalInterface(interface: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker | | RemoteProxy | queryLocalInterface(interface: string): IRemoteBroker | NA | getLocalInterface(descriptor: string): IRemoteBroker |
| RemoteProxy | getInterfaceDescriptor(): string | NA | getDescriptor(): string | | RemoteProxy | getInterfaceDescriptor(): string | NA | getDescriptor(): string |
| RemoteProxy | addDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | registerDeathRecipient(recipient: DeathRecipient, flags: number): void | | RemoteProxy | addDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | registerDeathRecipient(recipient: DeathRecipient, flags: number): void |
| RemoteProxy | removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void | | RemoteProxy | removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean | NA | unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void |
| RemoteProxy | NA | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> | | RemoteProxy | NA | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption): Promise<RequestResult> |
| RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void | | RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | NA | sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, options: MessageOption, callback: AsyncCallback<RequestResult>): void |
| IPCSkeleton | static flushCommands(object: IRemoteObject): number | NA | static flushCmdBuffer(object: IRemoteObject): void | | IPCSkeleton | static flushCommands(object: IRemoteObject): number | NA | static flushCmdBuffer(object: IRemoteObject): void |
| IPCSkeleton | static setCallingIdentity(identity: string): boolean | NA | static restoreCallingIdentity(identity: string): void | | IPCSkeleton | static setCallingIdentity(identity: string): boolean | NA | static restoreCallingIdentity(identity: string): void |
| Ashmem | static createAshmem(name: string, size: number): Ashmem | NA | static create(name: string, size: number): Ashmem | | Ashmem | static createAshmem(name: string, size: number): Ashmem | NA | static create(name: string, size: number): Ashmem |
| Ashmem | static createAshmemFromExisting(ashmem: Ashmem): Ashmem | NA | static create(ashmem: Ashmem): Ashmem | | Ashmem | static createAshmemFromExisting(ashmem: Ashmem): Ashmem | NA | static create(ashmem: Ashmem): Ashmem |
| Ashmem | mapAshmem(mapType: number): boolean | NA | mapTypedAshmem(mapType: number): void | | Ashmem | mapAshmem(mapType: number): boolean | NA | mapTypedAshmem(mapType: number): void |
| Ashmem | mapReadAndWriteAshmem(): boolean | NA | mapReadWriteAshmem(): void | | Ashmem | mapReadAndWriteAshmem(): boolean | NA | mapReadWriteAshmem(): void |
| Ashmem | mapReadOnlyAshmem(): boolean | NA | mapReadonlyAshmem(): void | | Ashmem | mapReadOnlyAshmem(): boolean | NA | mapReadonlyAshmem(): void |
| Ashmem | setProtection(protectionType: number): boolean | NA | setProtectionType(protectionType: number): void | | Ashmem | setProtection(protectionType: number): boolean | NA | setProtectionType(protectionType: number): void |
| Ashmem | writeToAshmem(buf: number[], size: number, offset: number): boolean | NA | writeAshmem(buf: number[], size: number, offset: number): void | | Ashmem | writeToAshmem(buf: number[], size: number, offset: number): boolean | NA | writeAshmem(buf: number[], size: number, offset: number): void |
| Ashmem | readFromAshmem(size: number, offset: number): number[] | NA | readAshmem(size: number, offset: number): number[] | | Ashmem | readFromAshmem(size: number, offset: number): number[] | NA | readAshmem(size: number, offset: number): number[] |
#### 适配指导 #### 适配指导
新增的接口以抛异常的方式返回错误码及对应的错误信息,以MessageParcel中的create接口为例,使用示例代码如下: 新增的接口以抛异常的方式返回错误码及对应的错误信息,以MessageParcel中的create接口为例,使用示例代码如下:
```js ```js
import rpc from '@ohos.rpc' import rpc from '@ohos.rpc'
try { try {
var data = rpc.MessageParcel.create(); var data = rpc.MessageParcel.create();
data.reclaim(); data.reclaim();
} catch (error) { } catch (error) {
console.info("create meassageParcel failed, errorCode = " + error.errCode); console.info("create meassageParcel failed, errorCode = " + error.errCode);
console.info("create meassageParcel failed, errorMessage = " + error.errorMessage); console.info("create meassageParcel failed, errorMessage = " + error.errorMessage);
} }
``` ```
更多接口的示例代码可参考[RPC通信API文档](../../../application-dev/reference/apis/js-apis-rpc.md) 更多接口的示例代码可参考[RPC通信API文档](../../../application-dev/reference/apis/js-apis-rpc.md)
\ No newline at end of file
# 定制子系统ChangeLog # 定制子系统ChangeLog
OpenHarmony 3.2.8.3 版本相较于OpenHarmony 3.2.8.1版本,定制子系统的API变更如下:
## cl.Customization.1 企业设备管理模块名称变更 ## cl.Customization.1 企业设备管理模块名称变更
从Opeharmonny 3.2.8.3版本开始,将"@ohos.enterpriseDeviceManager.d.ts"改为"@ohos.enterprise.adminManager.d.ts",开发者需要根据以下说明对应用进行适配。 从Opeharmonny 3.2.8.3版本开始,将"@ohos.enterpriseDeviceManager.d.ts"改为"@ohos.enterprise.adminManager.d.ts",开发者需要根据以下说明对应用进行适配。
......
# 上传下载子系统ChangeLog # 上传下载子系统ChangeLog
OpenHarmony 3.2.8.1版本相较于OpenHarmony 3.2.beta3版本,request子系统的API变更如下
## cl.request.1 错误码定义及API部分接口名称变更 ## cl.request.1 错误码定义及API部分接口名称变更
- 新增上传下载接口的[错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errorcode-request.md)处理。 - 新增上传下载接口的[错误码](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/errorcodes/errorcode-request.md)处理。
......
# 资源调度子系统ChangeLog # 资源调度子系统ChangeLog
## cl.resourceschedule.backgroundTaskManager ## cl.resourceschedule.backgroundTaskManager
对资源调度子系统backgroundTaskManager仓原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。 对资源调度子系统backgroundTaskManager仓原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更。废弃@ohos.backgroundTaskManager.d.ts文件,新增@ohos.resourceschedule.backgroundTaskManager.d.ts文件,将相关接口变更至对应的文件。 以下方法、属性、枚举和常量均从API9变更。废弃@ohos.backgroundTaskManager.d.ts文件,新增@ohos.resourceschedule.backgroundTaskManager.d.ts文件,将相关接口变更至对应的文件。
| 类名 | 接口类型 | 接口声明 | 说明 | | 类名 | 接口类型 | 接口声明 | 说明 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| backgroundTaskManager | namespace | declare namespace backgroundTaskManager | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | namespace | declare namespace backgroundTaskManager | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function resetAllEfficiencyResources(): void; | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function resetAllEfficiencyResources(): void; | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function applyEfficiencyResources(request: EfficiencyResourcesRequest): bool; | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts,修改为function applyEfficiencyResources(request: EfficiencyResourcesRequest): void; | | backgroundTaskManager | method | function applyEfficiencyResources(request: EfficiencyResourcesRequest): bool; | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts,修改为function applyEfficiencyResources(request: EfficiencyResourcesRequest): void; |
| backgroundTaskManager | method | function stopBackgroundRunning(context: Context): Promise<void>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function stopBackgroundRunning(context: Context): Promise<void>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function stopBackgroundRunning(context: Context, callback: AsyncCallback<void>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent): Promise<void>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function startBackgroundRunning(context: Context, bgMode: BackgroundMode, wantAgent: WantAgent, callback: AsyncCallback<void>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function requestSuspendDelay(reason: string, callback: Callback<void>): DelaySuspendInfo; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function getRemainingDelayTime(requestId: number): Promise<number>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function getRemainingDelayTime(requestId: number): Promise<number>; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function getRemainingDelayTime(requestId: number, callback: AsyncCallback<number>): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function cancelSuspendDelay(requestId: number): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function cancelSuspendDelay(requestId: number): void; | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | export enum BackgroundMode | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | export enum BackgroundMode | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | DATA_TRANSFER = 1 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | DATA_TRANSFER = 1 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | AUDIO_PLAYBACK = 2 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | AUDIO_PLAYBACK = 2 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | AUDIO_RECORDING = 3 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | AUDIO_RECORDING = 3 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | LOCATION = 4 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | LOCATION = 4 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | BLUETOOTH_INTERACTION = 5 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | BLUETOOTH_INTERACTION = 5 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | MULTI_DEVICE_CONNECTION = 6 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | MULTI_DEVICE_CONNECTION = 6 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | WIFI_INTERACTION = 7 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | WIFI_INTERACTION = 7 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | VOIP = 8 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | VOIP = 8 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.BackgroundMode | enum | TASK_KEEPING = 9 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.BackgroundMode | enum | TASK_KEEPING = 9 | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.DelaySuspendInfo | interface | interface DelaySuspendInfo | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.DelaySuspendInfo | interface | interface DelaySuspendInfo | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.DelaySuspendInfo | field | requestId: number | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.DelaySuspendInfo | field | requestId: number | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.DelaySuspendInfo | field | actualDelayTime: number | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.DelaySuspendInfo | field | actualDelayTime: number | 接口从API9开始废弃,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | export enum ResourceType | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | export enum ResourceType | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | CPU = 1 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | CPU = 1 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | COMMON_EVENT = 1 << 1 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | COMMON_EVENT = 1 << 1 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | TIMER = 1 << 2 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | TIMER = 1 << 2 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | WORK_SCHEDULER = 1 << 3 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | WORK_SCHEDULER = 1 << 3 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | BLUETOOTH = 1 << 4 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | BLUETOOTH = 1 << 4 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | GPS = 1 << 5 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | GPS = 1 << 5 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | AUDIO = 1 << 6 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | AUDIO = 1 << 6 | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | interface | export interface EfficiencyResourcesRequest | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | interface | export interface EfficiencyResourcesRequest | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | reason: string | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | reason: string | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isProcess?: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isProcess?: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isPersist?: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isPersist?: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | timeOut: number | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | timeOut: number | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isApply: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isApply: bool | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | resourceTypes: number | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | resourceTypes: number | 接口API9变更,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
**适配指导**<br> **适配指导**<br>
导入backgroundTaskManager模块。 导入backgroundTaskManager模块。
``` ```
import bundle form '@ohos.resourceschedule.backgroundTaskManager' import bundle form '@ohos.resourceschedule.backgroundTaskManager'
``` ```
此外还需要适配异常处理,具体参考[backgroundTaskManager接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md) 此外还需要适配异常处理,具体参考[backgroundTaskManager接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md)
## c2.resourceschedule.usageStatistics ## c2.resourceschedule.usageStatistics
对资源调度子系统deviceUsageStatistics仓原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。 对资源调度子系统deviceUsageStatistics仓原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更,废弃@ohos.bundleState.d.ts文件,新增@ohos.resourceschedule.usageStatistics.d.ts文件,类名也将从bundleState变更为usageStatistics。 以下方法、属性、枚举和常量均从API9变更,废弃@ohos.bundleState.d.ts文件,新增@ohos.resourceschedule.usageStatistics.d.ts文件,类名也将从bundleState变更为usageStatistics。
| 类名 | 接口类型 | 方法/属性/枚举/常量 | 变更类型 | | 类名 | 接口类型 | 方法/属性/枚举/常量 | 变更类型 |
| ----------------------------------------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ----------------------------------------- | --------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| bundleState | method | function isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void; | 废弃,移动到usageStatistics.isIdleState | | bundleState | method | function isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void; | 废弃,移动到usageStatistics.isIdleState |
| bundleState | method | function isIdleState(bundleName: string): Promise<boolean>; | 废弃,移动到usageStatistics.isIdleState | | bundleState | method | function isIdleState(bundleName: string): Promise<boolean>; | 废弃,移动到usageStatistics.isIdleState |
| bundleState | method | function queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void; | 废弃,修改为function queryAppGroup(callback: AsyncCallback<number>): void; | | bundleState | method | function queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void; | 废弃,修改为function queryAppGroup(callback: AsyncCallback<number>): void; |
| bundleState | method | function queryAppUsagePriorityGroup(): Promise<number>; | 废弃,修改为function queryAppGroup(): Promise<number>; | | bundleState | method | function queryAppUsagePriorityGroup(): Promise<number>; | 废弃,修改为function queryAppGroup(): Promise<number>; |
| bundleState | method | function queryBundleStateInfos(begin: number, end: number, callback: AsyncCallback<BundleActiveInfoResponse>): void; | 废弃,修改为function queryBundleStatsInfos(begin: number, end: number, callback: AsyncCallback<BundleStatsMap>): void; | | bundleState | method | function queryBundleStateInfos(begin: number, end: number, callback: AsyncCallback<BundleActiveInfoResponse>): void; | 废弃,修改为function queryBundleStatsInfos(begin: number, end: number, callback: AsyncCallback<BundleStatsMap>): void; |
| bundleState | method | function queryBundleStateInfos(begin: number, end: number): Promise<BundleActiveInfoResponse>; | 废弃, 修改为function queryBundleStatsInfos(begin: number, end: number): Promise<BundleStatsMap>; | | bundleState | method | function queryBundleStateInfos(begin: number, end: number): Promise<BundleActiveInfoResponse>; | 废弃, 修改为function queryBundleStatsInfos(begin: number, end: number): Promise<BundleStatsMap>; |
| bundleState | method | function queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStateInfo>>; | 废弃,修改为function queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStatsInfo>>; | | bundleState | method | function queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStateInfo>>; | 废弃,修改为function queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStatsInfo>>; |
| bundleState | method | function queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStateInfo>>): void; | 废弃,修改为function queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStatsInfo>>): void; | | bundleState | method | function queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStateInfo>>): void; | 废弃,修改为function queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStatsInfo>>): void; |
| bundleState | method | function queryBundleActiveStates(begin: number, end: number): Promise<Array<BundleActiveState>>; | 废弃,修改为function queryBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>; | | bundleState | method | function queryBundleActiveStates(begin: number, end: number): Promise<Array<BundleActiveState>>; | 废弃,修改为function queryBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>; |
| bundleState | method | function queryBundleActiveStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveState>>): void; | 废弃,修改为function queryBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void; | | bundleState | method | function queryBundleActiveStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveState>>): void; | 废弃,修改为function queryBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void; |
| bundleState | method | function queryCurrentBundleActiveStates(begin: number, end: number): Promise<Array<BundleActiveState>>; | 废弃,修改为function queryCurrentBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>; | | bundleState | method | function queryCurrentBundleActiveStates(begin: number, end: number): Promise<Array<BundleActiveState>>; | 废弃,修改为function queryCurrentBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>; |
| bundleState | method | function queryCurrentBundleActiveStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveState>>): void; | 废弃,修改为function queryCurrentBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void; | | bundleState | method | function queryCurrentBundleActiveStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveState>>): void; | 废弃,修改为function queryCurrentBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void; |
| bundleState | method | function getRecentlyUsedModules(maxNum?: number): Promise<Array<BundleActiveModuleInfo>>; | 废弃,修改为两个接口function QueryModuleUsageRecords(maxNum: number): Promise<Array<HapModuleInfo>>; function QueryModuleUsageRecords(): Promise<Array<HapModuleInfo>>; | | bundleState | method | function getRecentlyUsedModules(maxNum?: number): Promise<Array<BundleActiveModuleInfo>>; | 废弃,修改为两个接口function QueryModuleUsageRecords(maxNum: number): Promise<Array<HapModuleInfo>>; function QueryModuleUsageRecords(): Promise<Array<HapModuleInfo>>; |
| bundleState | method | function getRecentlyUsedModules(maxNum?: number, callback: AsyncCallback<Array<BundleActiveModuleInfo>>): void; | 废弃,修改为两个接口function QueryModuleUsageRecords(maxNum: number, callback: AsyncCallback<Array<HapModuleInfo>>): void; function QueryModuleUsageRecords(callback: AsyncCallback<Array<HapModuleInfo>>): void; | | bundleState | method | function getRecentlyUsedModules(maxNum?: number, callback: AsyncCallback<Array<BundleActiveModuleInfo>>): void; | 废弃,修改为两个接口function QueryModuleUsageRecords(maxNum: number, callback: AsyncCallback<Array<HapModuleInfo>>): void; function QueryModuleUsageRecords(callback: AsyncCallback<Array<HapModuleInfo>>): void; |
| bundleState | method | function queryAppUsagePriorityGroup(bundleName? : string): Promise<number>; | 废弃,修改为function queryAppGroup(bundleName: string): Promise<number>; | | bundleState | method | function queryAppUsagePriorityGroup(bundleName? : string): Promise<number>; | 废弃,修改为function queryAppGroup(bundleName: string): Promise<number>; |
| bundleState | method | function queryAppUsagePriorityGroup(bundleName? : string, callback: AsyncCallback<number>): void; | 废弃,修改为function queryAppGroup(bundleName: string, callback: AsyncCallback<number>): void; | | bundleState | method | function queryAppUsagePriorityGroup(bundleName? : string, callback: AsyncCallback<number>): void; | 废弃,修改为function queryAppGroup(bundleName: string, callback: AsyncCallback<number>): void; |
| bundleState | method | function setBundleGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void; | 废弃,修改为function setAppGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void; | | bundleState | method | function setBundleGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void; | 废弃,修改为function setAppGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void; |
| bundleState | method | function setBundleGroup(bundleName: string, newGroup: GroupType): Promise<void>; | 废弃,修改为function setAppGroup(bundleName: string, newGroup: GroupType): Promise<void>; | | bundleState | method | function setBundleGroup(bundleName: string, newGroup: GroupType): Promise<void>; | 废弃,修改为function setAppGroup(bundleName: string, newGroup: GroupType): Promise<void>; |
| bundleState | method | function registerGroupCallBack(callback: Callback<BundleActiveGroupCallbackInfo>, callback: AsyncCallback<void>): void; | 废弃,修改为function registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>, callback: AsyncCallback<void>): void; | | bundleState | method | function registerGroupCallBack(callback: Callback<BundleActiveGroupCallbackInfo>, callback: AsyncCallback<void>): void; | 废弃,修改为function registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>, callback: AsyncCallback<void>): void; |
| bundleState | method | function registerGroupCallBack(callback: Callback<BundleActiveGroupCallbackInfo>): Promise<void>; | 废弃,修改为function registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>): Promise<void>; | | bundleState | method | function registerGroupCallBack(callback: Callback<BundleActiveGroupCallbackInfo>): Promise<void>; | 废弃,修改为function registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>): Promise<void>; |
| bundleState | method | function unRegisterGroupCallBack(callback: AsyncCallback<void>): void; | 变更,修改为function unregisterAppGroupCallBack(): Promise<void>; | | bundleState | method | function unRegisterGroupCallBack(callback: AsyncCallback<void>): void; | 变更,修改为function unregisterAppGroupCallBack(): Promise<void>; |
| bundleState | method | function unRegisterGroupCallBack(): Promise<void>; | 变更,修改为function unregisterAppGroupCallBack(): Promise<void>; | | bundleState | method | function unRegisterGroupCallBack(): Promise<void>; | 变更,修改为function unregisterAppGroupCallBack(): Promise<void>; |
| bundleState | method | function queryBundleActiveEventStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void; | 变更,修改为function queryDeviceEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void; | | bundleState | method | function queryBundleActiveEventStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void; | 变更,修改为function queryDeviceEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void; |
| bundleState | method | function queryBundleActiveEventStates(begin: number, end: number): Promise<Array<BundleActiveEventState>>; | 接口从API9变更,修改为function queryDeviceEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>>; | | bundleState | method | function queryBundleActiveEventStates(begin: number, end: number): Promise<Array<BundleActiveEventState>>; | 接口从API9变更,修改为function queryDeviceEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>>; |
| bundleState | method | function queryAppNotificationNumber(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void; | 接口从API9变更,修改为function queryNotificationEventStats(begin: number, end: number, callback: AsyncCallback<Array<NotificationEventStats >>): void; | | bundleState | method | function queryAppNotificationNumber(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void; | 接口从API9变更,修改为function queryNotificationEventStats(begin: number, end: number, callback: AsyncCallback<Array<NotificationEventStats >>): void; |
| bundleState | method | function queryAppNotificationNumber(begin: number, end: number): Promise<Array<BundleActiveEventState>>; | 接口从API9变更,修改为function queryNotificationEventStats(begin: number, end: number): Promise<Array<NotificationEventStats >>; | | bundleState | method | function queryAppNotificationNumber(begin: number, end: number): Promise<Array<BundleActiveEventState>>; | 接口从API9变更,修改为function queryNotificationEventStats(begin: number, end: number): Promise<Array<NotificationEventStats >>; |
| bundleState.BundleActiveGroupCallbackInfo | interface | interface BundleActiveGroupCallbackInfo | 变更,修改为usageStatistics.AppGroupCallbackInfo | | bundleState.BundleActiveGroupCallbackInfo | interface | interface BundleActiveGroupCallbackInfo | 变更,修改为usageStatistics.AppGroupCallbackInfo |
| bundleState.BundleActiveGroupCallbackInfo | field | bundleName: string | 变更,移动到usageStatistics.AppGroupCallbackInfo | | bundleState.BundleActiveGroupCallbackInfo | field | bundleName: string | 变更,移动到usageStatistics.AppGroupCallbackInfo |
| bundleState.BundleActiveGroupCallbackInfo | field | changeReason: number | 变更,移动到usageStatistics.AppGroupCallbackInfo | | bundleState.BundleActiveGroupCallbackInfo | field | changeReason: number | 变更,移动到usageStatistics.AppGroupCallbackInfo |
| bundleState.BundleActiveGroupCallbackInfo | field | userId: number | 变更,移动到usageStatistics.AppGroupCallbackInfo | | bundleState.BundleActiveGroupCallbackInfo | field | userId: number | 变更,移动到usageStatistics.AppGroupCallbackInfo |
| bundleState.BundleActiveGroupCallbackInfo | field | appUsageNewGroup: number | 废弃,修改为appNewGroup | | bundleState.BundleActiveGroupCallbackInfo | field | appUsageNewGroup: number | 废弃,修改为appNewGroup |
| bundleState.BundleActiveGroupCallbackInfo | field | appUsageOldGroup: number | 废弃,修改为appOldGroup | | bundleState.BundleActiveGroupCallbackInfo | field | appUsageOldGroup: number | 废弃,修改为appOldGroup |
| bundleState.BundleActiveEventState | interface | interface BundleActiveEventState | 废弃,修改为usageStatistics.DeviceEventStats | | bundleState.BundleActiveEventState | interface | interface BundleActiveEventState | 废弃,修改为usageStatistics.DeviceEventStats |
| bundleState.BundleActiveEventState | field | count: number | 变更,移动到usageStatistics.DeviceEventStats | | bundleState.BundleActiveEventState | field | count: number | 变更,移动到usageStatistics.DeviceEventStats |
| bundleState.BundleActiveEventState | field | eventId: number | 变更,移动到usageStatistics.DeviceEventStats | | bundleState.BundleActiveEventState | field | eventId: number | 变更,移动到usageStatistics.DeviceEventStats |
| bundleState.BundleActiveEventState | field | name: string | 变更,移动到usageStatistics.DeviceEventStats | | bundleState.BundleActiveEventState | field | name: string | 变更,移动到usageStatistics.DeviceEventStats |
| bundleState.BundleActiveModuleInfo | interface | interface BundleActiveModuleInfo | 接口从API9变更,修改为usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | interface | interface BundleActiveModuleInfo | 接口从API9变更,修改为usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | formRecords: Array<BundleActiveFormInfo> | 变更,修改为formRecords: Array<HapModuleInfo> | | bundleState.BundleActiveModuleInfo | field | formRecords: Array<BundleActiveFormInfo> | 变更,修改为formRecords: Array<HapModuleInfo> |
| bundleState.BundleActiveModuleInfo | field | lastModuleUsedTime: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | lastModuleUsedTime: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | launchedCount: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | launchedCount: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | abilityIconId?: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | abilityIconId?: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | abilityDescriptionId?: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | abilityDescriptionId?: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | abilityLableId?: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | abilityLableId?: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | descriptionId?: number; | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | descriptionId?: number; | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | labelId?: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | labelId?: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | appLabelId?: number | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | appLabelId?: number | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | abilityName?: string | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | abilityName?: string | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | moduleName: string | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | moduleName: string | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | bundleName: string | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | bundleName: string | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.BundleActiveModuleInfo | field | deviceId?: string | 变更,移动到usageStatistics.HapModuleInfo | | bundleState.BundleActiveModuleInfo | field | deviceId?: string | 变更,移动到usageStatistics.HapModuleInfo |
| bundleState.GroupType | enum | enum GroupType | 变更,移动到usageStatistics.GroupType | | bundleState.GroupType | enum | enum GroupType | 变更,移动到usageStatistics.GroupType |
| bundleState.GroupType | enum | ACTIVE_GROUP_ALIVE | 废弃,修改为ALIVE_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_ALIVE | 废弃,修改为ALIVE_GROUP |
| bundleState.GroupType | enum | ACTIVE_GROUP_DAILY | 废弃,修改为DAILY_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_DAILY | 废弃,修改为DAILY_GROUP |
| bundleState.GroupType | enum | ACTIVE_GROUP_FIXED | 废弃,修改为FIXED_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_FIXED | 废弃,修改为FIXED_GROUP |
| bundleState.GroupType | enum | ACTIVE_GROUP_RARE | 废弃,修改为RARE_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_RARE | 废弃,修改为RARE_GROUP |
| bundleState.GroupType | enum | ACTIVE_GROUP_LIMIT | 废弃,修改为LIMITED_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_LIMIT | 废弃,修改为LIMITED_GROUP |
| bundleState.GroupType | enum | ACTIVE_GROUP_NEVER | 废弃,修改为NEVER_GROUP | | bundleState.GroupType | enum | ACTIVE_GROUP_NEVER | 废弃,修改为NEVER_GROUP |
| bundleState.IntervalType | enum | enum IntervalType | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | enum IntervalType | 废弃,移动到usageStatistics.IntervalType |
| bundleState.IntervalType | enum | BY_OPTIMIZED | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | BY_OPTIMIZED | 废弃,移动到usageStatistics.IntervalType |
| bundleState.IntervalType | enum | BY_DAILY | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | BY_DAILY | 废弃,移动到usageStatistics.IntervalType |
| bundleState.IntervalType | enum | BY_WEEKLY | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | BY_WEEKLY | 废弃,移动到usageStatistics.IntervalType |
| bundleState.IntervalType | enum | BY_MONTHLY | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | BY_MONTHLY | 废弃,移动到usageStatistics.IntervalType |
| bundleState.IntervalType | enum | BY_ANNUALLY | 废弃,移动到usageStatistics.IntervalType | | bundleState.IntervalType | enum | BY_ANNUALLY | 废弃,移动到usageStatistics.IntervalType |
| bundleState.BundleActiveInfoResponse | interface | interface BundleActiveInfoResponse | 废弃,修改为usageStatistics.BundleStatsMap | | bundleState.BundleActiveInfoResponse | interface | interface BundleActiveInfoResponse | 废弃,修改为usageStatistics.BundleStatsMap |
| bundleState.BundleActiveState | interface | interface BundleActiveState | 废弃,修改为usageStatistics.BundleEvents | | bundleState.BundleActiveState | interface | interface BundleActiveState | 废弃,修改为usageStatistics.BundleEvents |
| bundleState.BundleActiveState | field | stateType?: number | 废弃,修改为eventId | | bundleState.BundleActiveState | field | stateType?: number | 废弃,修改为eventId |
| bundleState.BundleActiveState | field | stateOccurredTime?: number | 废弃,修改为eventOccurredTime | | bundleState.BundleActiveState | field | stateOccurredTime?: number | 废弃,修改为eventOccurredTime |
| bundleState.BundleActiveState | field | nameOfClass?: string | 废弃,移动到usageStatistics.BundleEvents | | bundleState.BundleActiveState | field | nameOfClass?: string | 废弃,移动到usageStatistics.BundleEvents |
| bundleState.BundleActiveState | field | indexOfLink?: string | 废弃,移动到usageStatistics.BundleEvents | | bundleState.BundleActiveState | field | indexOfLink?: string | 废弃,移动到usageStatistics.BundleEvents |
| bundleState.BundleActiveState | field | bundleName?: string | 废弃,移动到usageStatistics.BundleEvents | | bundleState.BundleActiveState | field | bundleName?: string | 废弃,移动到usageStatistics.BundleEvents |
| bundleState.BundleActiveState | field | appUsagePriorityGroup?: number | 废弃,修改为appGroup | | bundleState.BundleActiveState | field | appUsagePriorityGroup?: number | 废弃,修改为appGroup |
| bundleState.BundleStateInfo | interface | interface BundleStateInfo | 废弃,修改为usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | interface | interface BundleStateInfo | 废弃,修改为usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | method | merge(toMerge: BundleStateInfo): void | 废弃 | | bundleState.BundleStateInfo | method | merge(toMerge: BundleStateInfo): void | 废弃 |
| bundleState.BundleStateInfo | field | infosEndTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | infosEndTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | infosBeginTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | infosBeginTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | fgAbilityPrevAccessTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | fgAbilityPrevAccessTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | fgAbilityAccessTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | fgAbilityAccessTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | bundleName?: string | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | bundleName?: string | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | abilitySeenTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | abilitySeenTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | abilityPrevSeenTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | abilityPrevSeenTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | abilityPrevAccessTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | abilityPrevAccessTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | abilityInFgTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | abilityInFgTotalTime?: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState.BundleStateInfo | field | id: number | 废弃,移动到usageStatistics.BundleStatsInfo | | bundleState.BundleStateInfo | field | id: number | 废弃,移动到usageStatistics.BundleStatsInfo |
| bundleState | namespace | declare namespace bundleState | 废弃,修改为usageStatistics,移植到ohos.resourceschedule.usageStatistics.d.ts | | bundleState | namespace | declare namespace bundleState | 废弃,修改为usageStatistics,移植到ohos.resourceschedule.usageStatistics.d.ts |
**适配指导**<br> **适配指导**<br>
导入usageStatistics模块。 导入usageStatistics模块。
``` ```
import bundle form '@ohos.resourceschedule.usageStatistics' import bundle form '@ohos.resourceschedule.usageStatistics'
``` ```
此外还需要适配异常处理,具体参考[usageStatistics接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-deviceUsageStatistics.md) 此外还需要适配异常处理,具体参考[usageStatistics接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-deviceUsageStatistics.md)
## c3.resourceschedule.workScheduler ## c3.resourceschedule.workScheduler
对资源调度子系统workScheduler仓原有接口进行整改,原有API9接口变更为新的API9接口。新的API9接口符合错误码规范。 对资源调度子系统workScheduler仓原有接口进行整改,原有API9接口变更为新的API9接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更。废弃@ohos.workScheduler.d.ts文件,新增@ohos.resourceschedule.workScheduler.d.ts文件,将相关接口变更至对应的文件中。 以下方法、属性、枚举和常量均从API9变更。废弃@ohos.workScheduler.d.ts文件,新增@ohos.resourceschedule.workScheduler.d.ts文件,将相关接口变更至对应的文件中。
| 类名 | 接口类型 | 接口声明 | 变更类型 | | 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| workScheduler | namespace | declare namespace workScheduler | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | namespace | declare namespace workScheduler | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | interface | export interface WorkInfo | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | interface | export interface WorkInfo | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | idleWaitTime?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | idleWaitTime?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isDeepIdle?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isDeepIdle?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | repeatCount?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | repeatCount?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isRepeat?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isRepeat?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | repeatCycleTime?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | repeatCycleTime?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | storageRequest?: StorageRequest | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | storageRequest?: StorageRequest | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | batteryStatus?: BatteryStatus | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | batteryStatus?: BatteryStatus | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | batteryLevel?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | batteryLevel?: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | chargerType?: ChargingType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | chargerType?: ChargingType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isCharging?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isCharging?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | networkType?: NetworkType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | networkType?: NetworkType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isPersisted?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isPersisted?: boolean | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | abilityName: string | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | abilityName: string | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | bundleName: string | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | bundleName: string | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | workId: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | workId: number | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function isLastWorkTimeOut(workId: number): Promise; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function isLastWorkTimeOut(workId: number): Promise; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function isLastWorkTimeOut(workId: number, callback: AsyncCallback<void>): boolean; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function isLastWorkTimeOut(workId: number, callback: AsyncCallback<void>): boolean; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function stopAndClearWorks(): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopAndClearWorks(): boolean; | | workScheduler | method | function stopAndClearWorks(): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopAndClearWorks(): boolean; |
| workScheduler | method | function obtainAllWorks(): Promise<Array<WorkInfo>>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function obtainAllWorks(): Promise<Array<WorkInfo>>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function obtainAllWorks(callback: AsyncCallback<void>): Array<WorkInfo>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function obtainAllWorks(callback: AsyncCallback<void>): Array<WorkInfo>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function getWorkStatus(workId: number): Promise<WorkInfo>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function getWorkStatus(workId: number): Promise<WorkInfo>; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function getWorkStatus(workId: number, callback: AsyncCallback<WorkInfo>): void; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function getWorkStatus(workId: number, callback: AsyncCallback<WorkInfo>): void; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopWork(work: WorkInfo, needCancel?: boolean): void; | | workScheduler | method | function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopWork(work: WorkInfo, needCancel?: boolean): void; |
| workScheduler | method | function startWork(work: WorkInfo): boolean; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function startWork(work: WorkInfo): void; | | workScheduler | method | function startWork(work: WorkInfo): boolean; | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function startWork(work: WorkInfo): void; |
| workScheduler.NetworkType | enum | export enum NetworkType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | export enum NetworkType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_ANY = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_ANY = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_MOBILE | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_MOBILE | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_BLUETOOTH | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_BLUETOOTH | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI_P2P | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI_P2P | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_ETHERNET | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_ETHERNET | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | export enum ChargingType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | export enum ChargingType | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_ANY = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_ANY = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_AC | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_AC | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_USB | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_USB | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_WIRELESS | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_WIRELESS | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | export enum BatteryStatus | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | export enum BatteryStatus | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW_OR_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW_OR_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.StorageRequest | enum | export enum StorageRequest | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.StorageRequest | enum | export enum StorageRequest | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW = 0 | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW_OR_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW_OR_OKAY | 接口API9变更,移植到ohos.resourceschedule.workScheduler.d.ts |
**适配指导**<br> **适配指导**<br>
导入workScheduler模块。 导入workScheduler模块。
``` ```
import bundle form '@ohos.resourceschedule.workScheduler' import bundle form '@ohos.resourceschedule.workScheduler'
``` ```
此外还需要适配异常处理,具体参考[workScheduler接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-workScheduler.md) 此外还需要适配异常处理,具体参考[workScheduler接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-workScheduler.md)
## c4.resourceschedule.reminderAgent ## c4.resourceschedule.reminderAgent
对资源调度子系统提醒代理原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。 对资源调度子系统提醒代理原有接口进行整改,原有API8及之前的接口全部废弃,原有API9接口删除,需要使用新的API9接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.8.2及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更,废弃@ohos.reminderAgent.d.ts文件,新增@ohos.reminderAgentManager.d.ts文件,类名也将从reminderAgent变更为reminderAgentManager。 以下方法、属性、枚举和常量均从API9变更,废弃@ohos.reminderAgent.d.ts文件,新增@ohos.reminderAgentManager.d.ts文件,类名也将从reminderAgent变更为reminderAgentManager。
| 类名 | 接口类型 | 方法/属性/枚举/常量 | 变更类型 | | 类名 | 接口类型 | 方法/属性/枚举/常量 | 变更类型 |
| --------------------- | ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | --------------------- | ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| reminderAgent | method | publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | publishReminder(reminderReq: ReminderRequest): Promise<number>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | publishReminder(reminderReq: ReminderRequest): Promise<number>; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | cancelReminder(reminderId: number, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | cancelReminder(reminderId: number, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | cancelReminder(reminderId: number): Promise<void>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | cancelReminder(reminderId: number): Promise<void>; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | getValidReminders(): Promise<Array<ReminderRequest>>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | getValidReminders(): Promise<Array<ReminderRequest>>; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | cancelAllReminders(callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | cancelAllReminders(callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | cancelAllReminders(): Promise<void>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | cancelAllReminders(): Promise<void>; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | addNotificationSlot(slot: NotificationSlot): Promise<void>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | addNotificationSlot(slot: NotificationSlot): Promise<void>; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager | | reminderAgent | method | removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void; | 废弃,移动到reminderAgentManager |
| reminderAgent | method | removeNotificationSlot(slotType: notification.SlotType): Promise<void>; | 废弃,移动到reminderAgentManager | | reminderAgent | method | removeNotificationSlot(slotType: notification.SlotType): Promise<void>; | 废弃,移动到reminderAgentManager |
| reminderAgent.ActionButtonType | enum | ACTION_BUTTON_TYPE_CLOSE | 废弃,移动到reminderAgentManager.ActionButtonType | | reminderAgent.ActionButtonType | enum | ACTION_BUTTON_TYPE_CLOSE | 废弃,移动到reminderAgentManager.ActionButtonType |
| reminderAgent.ActionButtonType | enum | ACTION_BUTTON_TYPE_SNOOZE | 废弃,移动到reminderAgentManager.ActionButtonType | | reminderAgent.ActionButtonType | enum | ACTION_BUTTON_TYPE_SNOOZE | 废弃,移动到reminderAgentManager.ActionButtonType |
| reminderAgent.ReminderType | enum | REMINDER_TYPE_TIMER | 废弃,移动到reminderAgentManager.ReminderType | | reminderAgent.ReminderType | enum | REMINDER_TYPE_TIMER | 废弃,移动到reminderAgentManager.ReminderType |
| reminderAgent.ReminderType | enum | REMINDER_TYPE_CALENDAR | 废弃,移动到reminderAgentManager.ReminderType | | reminderAgent.ReminderType | enum | REMINDER_TYPE_CALENDAR | 废弃,移动到reminderAgentManager.ReminderType |
| reminderAgent.ReminderType | enum | REMINDER_TYPE_CALENDAR | 废弃,移动到reminderAgentManager.ReminderType | | reminderAgent.ReminderType | enum | REMINDER_TYPE_CALENDAR | 废弃,移动到reminderAgentManager.ReminderType |
| reminderAgent.ActionButton | field | title:string | 废弃,移动到reminderAgentManager.ActionButton | | reminderAgent.ActionButton | field | title:string | 废弃,移动到reminderAgentManager.ActionButton |
| reminderAgent.ActionButton | field | type:ActionButtonType | 废弃,移动到reminderAgentManager.ActionButton | | reminderAgent.ActionButton | field | type:ActionButtonType | 废弃,移动到reminderAgentManager.ActionButton |
| reminderAgent.WantAgent | field | pkgName:string | 废弃,移动到reminderAgentManager.WantAgent | | reminderAgent.WantAgent | field | pkgName:string | 废弃,移动到reminderAgentManager.WantAgent |
| reminderAgent.WantAgent | field | abilityName:string | 废弃,移动到reminderAgentManager.WantAgent | | reminderAgent.WantAgent | field | abilityName:string | 废弃,移动到reminderAgentManager.WantAgent |
| reminderAgent.MaxScreenWantAgent | field | pkgName:string | 废弃,移动到reminderAgentManager.MaxScreenWantAgent | | reminderAgent.MaxScreenWantAgent | field | pkgName:string | 废弃,移动到reminderAgentManager.MaxScreenWantAgent |
| reminderAgent.MaxScreenWantAgent | field | abilityName:string | 废弃,移动到reminderAgentManager.MaxScreenWantAgent | | reminderAgent.MaxScreenWantAgent | field | abilityName:string | 废弃,移动到reminderAgentManager.MaxScreenWantAgent |
| reminderAgent.ReminderRequest | field | reminderType:ReminderType | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | reminderType:ReminderType | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | actionButton?:ActionButton | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | actionButton?:ActionButton | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | wantAgent?:WantAgent | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | wantAgent?:WantAgent | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | maxScreenWantAgent?:MaxScreenWantAgent | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | maxScreenWantAgent?:MaxScreenWantAgent | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | ringDuration?:number | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | ringDuration?:number | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | snoozeTimes?:number | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | snoozeTimes?:number | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | timeInterval?:number | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | timeInterval?:number | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | title?:string | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | title?:string | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | content?:string | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | content?:string | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | expiredContent?:string | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | expiredContent?:string | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | snoozeContent?:string | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | snoozeContent?:string | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | notificationId?:number | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | notificationId?:number | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequest | field | slotType?: notification.SlotType | 废弃,移动到reminderAgentManager.ReminderRequest | | reminderAgent.ReminderRequest | field | slotType?: notification.SlotType | 废弃,移动到reminderAgentManager.ReminderRequest |
| reminderAgent.ReminderRequestCalendar | field | dateTime:LocalDateTime | 废弃,移动到reminderAgentManager.ReminderRequestCalendar | | reminderAgent.ReminderRequestCalendar | field | dateTime:LocalDateTime | 废弃,移动到reminderAgentManager.ReminderRequestCalendar |
| reminderAgent.ReminderRequestCalendar | field | repeatMonths?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestCalendar | | reminderAgent.ReminderRequestCalendar | field | repeatMonths?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestCalendar |
| reminderAgent.ReminderRequestCalendar | field | repeatDays?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestCalendar | | reminderAgent.ReminderRequestCalendar | field | repeatDays?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestCalendar |
| reminderAgent.ReminderRequestAlarm | field | hour:number | 废弃,移动到reminderAgentManager.ReminderRequestAlarm | | reminderAgent.ReminderRequestAlarm | field | hour:number | 废弃,移动到reminderAgentManager.ReminderRequestAlarm |
| reminderAgent.ReminderRequestAlarm | field | minute:number | 废弃,移动到reminderAgentManager.ReminderRequestAlarm | | reminderAgent.ReminderRequestAlarm | field | minute:number | 废弃,移动到reminderAgentManager.ReminderRequestAlarm |
| reminderAgent.ReminderRequestAlarm | field | daysOfWeek?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestAlarm | | reminderAgent.ReminderRequestAlarm | field | daysOfWeek?:Array<number> | 废弃,移动到reminderAgentManager.ReminderRequestAlarm |
| reminderAgent.ReminderRequestTimer | field | triggerTimeInSeconds:number | 废弃,移动到reminderAgentManager.ReminderRequestTimer | | reminderAgent.ReminderRequestTimer | field | triggerTimeInSeconds:number | 废弃,移动到reminderAgentManager.ReminderRequestTimer |
| reminderAgent.LocalDateTime | field | year:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | year:number | 废弃,移动到reminderAgentManager.LocalDateTime |
| reminderAgent.LocalDateTime | field | month:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | month:number | 废弃,移动到reminderAgentManager.LocalDateTime |
| reminderAgent.LocalDateTime | field | day:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | day:number | 废弃,移动到reminderAgentManager.LocalDateTime |
| reminderAgent.LocalDateTime | field | hour:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | hour:number | 废弃,移动到reminderAgentManager.LocalDateTime |
| reminderAgent.LocalDateTime | field | minute:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | minute:number | 废弃,移动到reminderAgentManager.LocalDateTime |
| reminderAgent.LocalDateTime | field | second?:number | 废弃,移动到reminderAgentManager.LocalDateTime | | reminderAgent.LocalDateTime | field | second?:number | 废弃,移动到reminderAgentManager.LocalDateTime |
**适配指导**<br> **适配指导**<br>
导入reminderAgentManager模块。 导入reminderAgentManager模块。
``` ```
import bundle form '@ohos.reminderAgentManager' import bundle form '@ohos.reminderAgentManager'
``` ```
此外还需要适配异常处理,具体参考[reminderAgentManager接口文档](../../../application-dev/reference/apis/js-apis-reminderAgentManager.md) 此外还需要适配异常处理,具体参考[reminderAgentManager接口文档](../../../application-dev/reference/apis/js-apis-reminderAgentManager.md)
# 电话子系统ChangeLog # 电话子系统ChangeLog
## cl.telephony.1 sms模块SystemAPI接口入参变更 ## cl.telephony.1 sms模块SystemAPI接口入参变更
已发布的部分电话子系统sms短信模块SystemAPI传入参数发生变化,不符合OpenHarmony接口规范。从API9开始做出以下变更: 已发布的部分电话子系统sms短信模块SystemAPI传入参数发生变化,不符合OpenHarmony接口规范。从API9开始做出以下变更:
isImsSmsSupported接口新增一个传入参数slotId,表示卡槽号。 isImsSmsSupported接口新增一个传入参数slotId,表示卡槽号。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配变更js接口的入参,否则会影响原有功能。 基于此前版本开发的应用,需适配变更js接口的入参,否则会影响原有功能。
**关键的接口/组件变更** **关键的接口/组件变更**
- 涉及接口 - 涉及接口
isImsSmsSupported(callback: AsyncCallback<boolean>): void; isImsSmsSupported(callback: AsyncCallback<boolean>): void;
isImsSmsSupported(): Promise<boolean>; isImsSmsSupported(): Promise<boolean>;
- 变更前: - 变更前:
```js ```js
function isImsSmsSupported(callback: AsyncCallback<boolean>): void; function isImsSmsSupported(callback: AsyncCallback<boolean>): void;
function isImsSmsSupported(): Promise<boolean>; function isImsSmsSupported(): Promise<boolean>;
``` ```
- 变更后: - 变更后:
```js ```js
function isImsSmsSupported(slotId: number, callback: AsyncCallback<boolean>): void; function isImsSmsSupported(slotId: number, callback: AsyncCallback<boolean>): void;
function isImsSmsSupported(slotId: number): Promise<boolean>; function isImsSmsSupported(slotId: number): Promise<boolean>;
``` ```
**适配指导** **适配指导**
新增一个入参,示例代码如下: 新增一个入参,示例代码如下:
callback方式 callback方式
```js ```js
let slotId = 0; let slotId = 0;
sms.isImsSmsSupported(slotId, (err, data) => { sms.isImsSmsSupported(slotId, (err, data) => {
console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`); console.log(`callback: err->${JSON.stringify(err)}, data->${JSON.stringify(data)}`);
}); });
``` ```
promise方式 promise方式
```js ```js
let slotId = 0; let slotId = 0;
let promise = sms.isImsSmsSupported(slotId); let promise = sms.isImsSmsSupported(slotId);
promise.then(data => { promise.then(data => {
console.log(`isImsSmsSupported success, promise: data->${JSON.stringify(data)}`); console.log(`isImsSmsSupported success, promise: data->${JSON.stringify(data)}`);
}).catch(err => { }).catch(err => {
console.error(`isImsSmsSupported failed, promise: err->${JSON.stringify(err)}`); console.error(`isImsSmsSupported failed, promise: err->${JSON.stringify(err)}`);
}); });
``` ```
# 主题框架changeLog # 主题框架changeLog
## cl.theme.1 API9接口支持异常处理 ## cl.theme.1 API9接口支持异常处理
下列模块内部接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。在API9进行变更。 下列模块内部接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。在API9进行变更。
- 壁纸管理服务:@ohos.wallpaper.d.ts - 壁纸管理服务:@ohos.wallpaper.d.ts
- 锁屏管理服务:@ohos.screenLock.d.ts - 锁屏管理服务:@ohos.screenLock.d.ts
以上模块中的接口变更为: 以上模块中的接口变更为:
同步接口:通过抛出异常的方式返回错误信息。 同步接口:通过抛出异常的方式返回错误信息。
异步接口:参数检查错误同步抛出,业务逻辑错误通过AsyncCallback或Promise的error对象抛出。 异步接口:参数检查错误同步抛出,业务逻辑错误通过AsyncCallback或Promise的error对象抛出。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配接口的错误信息返回方式,否则会影响原有业务逻辑。 基于此前版本开发的应用,需适配接口的错误信息返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下标记为壁纸管理服务接口废除: 以下标记为壁纸管理服务接口废除:
- getColors(wallpaperType: WallpaperType, callback: AsyncCallback<Array<RgbaColor>>): void; - getColors(wallpaperType: WallpaperType, callback: AsyncCallback<Array<RgbaColor>>): void;
- getColors(wallpaperType: WallpaperType): Promise<Array<RgbaColor>>; - getColors(wallpaperType: WallpaperType): Promise<Array<RgbaColor>>;
- getId(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void; - getId(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void;
- getId(wallpaperType: WallpaperType): Promise<number>; - getId(wallpaperType: WallpaperType): Promise<number>;
- getMinHeight(callback: AsyncCallback<number>): void; - getMinHeight(callback: AsyncCallback<number>): void;
- getMinHeight(): Promise<number>; - getMinHeight(): Promise<number>;
- getMinWidth(callback: AsyncCallback<number>): void; - getMinWidth(callback: AsyncCallback<number>): void;
- getMinWidth(): Promise<number>; - getMinWidth(): Promise<number>;
- isChangePermitted(callback: AsyncCallback<boolean>): void; - isChangePermitted(callback: AsyncCallback<boolean>): void;
- isChangePermitted(): Promise<boolean>; - isChangePermitted(): Promise<boolean>;
- isOperationAllowed(callback: AsyncCallback<boolean>): void; - isOperationAllowed(callback: AsyncCallback<boolean>): void;
- isOperationAllowed(): Promise<boolean>; - isOperationAllowed(): Promise<boolean>;
- reset(wallpaperType: WallpaperType, callback: AsyncCallback<void>): void; - reset(wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;
- reset(wallpaperType: WallpaperType): Promise<void>; - reset(wallpaperType: WallpaperType): Promise<void>;
- setWallpaper(source: string | image.PixelMap, wallpaperType: WallpaperType, callback: AsyncCallback<void>): void; - setWallpaper(source: string | image.PixelMap, wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;
- setWallpaper(source: string | image.PixelMap, wallpaperType: WallpaperType): Promise<void>; - setWallpaper(source: string | image.PixelMap, wallpaperType: WallpaperType): Promise<void>;
- getFile(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void; - getFile(wallpaperType: WallpaperType, callback: AsyncCallback<number>): void;
- getFile(wallpaperType: WallpaperType): Promise<number>; - getFile(wallpaperType: WallpaperType): Promise<number>;
- getPixelMap(wallpaperType: WallpaperType, callback: AsyncCallback<image.PixelMap>): void; - getPixelMap(wallpaperType: WallpaperType, callback: AsyncCallback<image.PixelMap>): void;
- getPixelMap(wallpaperType: WallpaperType): Promise<image.PixelMap>; - getPixelMap(wallpaperType: WallpaperType): Promise<image.PixelMap>;
壁纸管理服务替代接口如下: 壁纸管理服务替代接口如下:
- getColorsSync(wallpaperType: WallpaperType): Array<RgbaColor>; - getColorsSync(wallpaperType: WallpaperType): Array<RgbaColor>;
- getIdSync(wallpaperType: WallpaperType): number; - getIdSync(wallpaperType: WallpaperType): number;
- getMinHeightSync(): number; - getMinHeightSync(): number;
- getMinWidthSync(): number; - getMinWidthSync(): number;
- isChangeAllowed(): boolean; - isChangeAllowed(): boolean;
- isUserChangeAllowed(): boolean; - isUserChangeAllowed(): boolean;
- restore(wallpaperType: WallpaperType, callback: AsyncCallback<void>): void; - restore(wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;
- restore(wallpaperType: WallpaperType): Promise<void>; - restore(wallpaperType: WallpaperType): Promise<void>;
- setImage(source: string | image.PixelMap, wallpaperType: WallpaperType, callback: AsyncCallback<void>): void; - setImage(source: string | image.PixelMap, wallpaperType: WallpaperType, callback: AsyncCallback<void>): void;
- setImage(source: string | image.PixelMap, wallpaperType: WallpaperType): Promise<void>; - setImage(source: string | image.PixelMap, wallpaperType: WallpaperType): Promise<void>;
- getFileSync(wallpaperType: WallpaperType): number; - getFileSync(wallpaperType: WallpaperType): number;
- getImage(wallpaperType: WallpaperType, callback: AsyncCallback<image.PixelMap>): void; - getImage(wallpaperType: WallpaperType, callback: AsyncCallback<image.PixelMap>): void;
- getImage(wallpaperType: WallpaperType): Promise<image.PixelMap>; - getImage(wallpaperType: WallpaperType): Promise<image.PixelMap>;
以下标记为壁纸管理服务接口变更: 以下标记为壁纸管理服务接口变更:
- on(type: 'colorChange', callback: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void - on(type: 'colorChange', callback: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void
- off(type: 'colorChange', callback?: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void - off(type: 'colorChange', callback?: (colors: Array<RgbaColor>, wallpaperType: WallpaperType) => void): void
以下标记为锁屏管理服务接口废除: 以下标记为锁屏管理服务接口废除:
- isScreenLocked(callback: AsyncCallback<boolean>): void; - isScreenLocked(callback: AsyncCallback<boolean>): void;
- isScreenLocked(): Promise<boolean>; - isScreenLocked(): Promise<boolean>;
- isSecureMode(callback: AsyncCallback<boolean>): void; - isSecureMode(callback: AsyncCallback<boolean>): void;
- isSecureMode(): Promise<boolean>; - isSecureMode(): Promise<boolean>;
- unlockScreen(callback: AsyncCallback<void>): void; - unlockScreen(callback: AsyncCallback<void>): void;
- unlockScreen(): Promise<void>; - unlockScreen(): Promise<void>;
锁屏管理服务替代接口如下: 锁屏管理服务替代接口如下:
- isLocked(): boolean; - isLocked(): boolean;
- isSecure(): boolean; - isSecure(): boolean;
- unlock(callback: AsyncCallback<boolean>): void; - unlock(callback: AsyncCallback<boolean>): void;
- unlock():Promise<boolean>; - unlock():Promise<boolean>;
以下标记为锁屏管理服务接口删除: 以下标记为锁屏管理服务接口删除:
- lockScreen(callback: AsyncCallback<void>): void; - lockScreen(callback: AsyncCallback<void>): void;
- lockScreen(): Promise<void>; - lockScreen(): Promise<void>;
以下标记为锁屏管理服务接口新增: 以下标记为锁屏管理服务接口新增:
- lock(callback: AsyncCallback<boolean>): void; - lock(callback: AsyncCallback<boolean>): void;
- lock():Promise<boolean>; - lock():Promise<boolean>;
以下标记为锁屏管理服务接口变更: 以下标记为锁屏管理服务接口变更:
- onSystemEvent(callback: Callback<SystemEvent>): boolean; - onSystemEvent(callback: Callback<SystemEvent>): boolean;
- sendScreenLockEvent(event: String, parameter: number, callback: AsyncCallback<boolean>): void; - sendScreenLockEvent(event: String, parameter: number, callback: AsyncCallback<boolean>): void;
- sendScreenLockEvent(event: String, parameter: number): Promise<boolean>; - sendScreenLockEvent(event: String, parameter: number): Promise<boolean>;
**壁纸管理服务适配指导** **壁纸管理服务适配指导**
异步接口以getImage为例,示例代码如下: 异步接口以getImage为例,示例代码如下:
```ts ```ts
import pointer from '@ohos.wallpaper'; import pointer from '@ohos.wallpaper';
try { try {
wallpaper.getImage(wallpaper.WallpaperType.WALLPAPER_SYSTEM).then((data) => { wallpaper.getImage(wallpaper.WallpaperType.WALLPAPER_SYSTEM).then((data) => {
console.log(`success to getImage: ${JSON.stringify(data)}`); console.log(`success to getImage: ${JSON.stringify(data)}`);
}).catch((error) => { }).catch((error) => {
console.error(`failed to getImage because: ${JSON.stringify(error)}`); console.error(`failed to getImage because: ${JSON.stringify(error)}`);
}); });
} catch (err) { } catch (err) {
console.error(`failed to getImage because: ${JSON.stringify(err)}`); console.error(`failed to getImage because: ${JSON.stringify(err)}`);
} }
``` ```
同步接口以getFileSync为例,示例代码如下: 同步接口以getFileSync为例,示例代码如下:
```ts ```ts
import pointer from '@ohos.wallpaper'; import pointer from '@ohos.wallpaper';
try { try {
let file = wallpaper.getFileSync(wallpaper.WallpaperType.WALLPAPER_SYSTEM); let file = wallpaper.getFileSync(wallpaper.WallpaperType.WALLPAPER_SYSTEM);
} catch (err) { } catch (err) {
console.error(`failed to getFileSync because: ${err.message}`); console.error(`failed to getFileSync because: ${err.message}`);
} }
``` ```
**锁屏管理服务适配指导** **锁屏管理服务适配指导**
异步接口以lock为例,示例代码如下: 异步接口以lock为例,示例代码如下:
```ts ```ts
import screenLock from '@ohos.screenlock'; import screenLock from '@ohos.screenlock';
try { try {
screenLock.lock((err, data) => { screenLock.lock((err, data) => {
if (err) { if (err) {
console.error(`Failed to lock the screen, because: ${err.message}`); console.error(`Failed to lock the screen, because: ${err.message}`);
return; return;
} }
console.info(`lock the screen successfully. result: ${data}`); console.info(`lock the screen successfully. result: ${data}`);
}); });
} catch (err) { } catch (err) {
console.error(`Failed to lock the screen, because: ${err.message}`); console.error(`Failed to lock the screen, because: ${err.message}`);
} }
``` ```
同步接口以onSystemEvent为例,示例代码如下: 同步接口以onSystemEvent为例,示例代码如下:
```ts ```ts
import screenLock from '@ohos.screenlock'; import screenLock from '@ohos.screenlock';
try { try {
let isSuccess = screenLock.onSystemEvent((event) => { let isSuccess = screenLock.onSystemEvent((event) => {
console.log(`Register the system event which related to screenlock successfully. eventType: ${event.eventType}`) console.log(`Register the system event which related to screenlock successfully. eventType: ${event.eventType}`)
}); });
} catch (err) { } catch (err) {
console.error(`Failed to register the system event which related to screenlock, because: ${err.message}`) console.error(`Failed to register the system event which related to screenlock, because: ${err.message}`)
} }
``` ```
# wantAgent的JS API变更Changelog # wantAgent的JS API变更Changelog
OpenHarmony 3.2.9.1 sp8版本相较于OpenHarmony 3.2.8.1版本,wantAgent的API变更如下
## cl.url.1.trigger类接口变更 ## cl.url.1.trigger类接口变更
trigger(agent: WantAgent, triggerInfo: TriggerInfo, callback?: Callback<CompleteData>): void ; trigger(agent: WantAgent, triggerInfo: TriggerInfo, callback?: Callback<CompleteData>): void ;
...@@ -71,7 +69,7 @@ function getWantAgentCallback(err, data) { ...@@ -71,7 +69,7 @@ function getWantAgentCallback(err, data) {
//getUid回调 //getUid回调
function triggerCallback(err, data) { function triggerCallback(err, data) {
if(err) { if(err) {
console.info('getUid failed!' + err.code + err.message); console.info('getUid failed!' + JSON.stringify(err.code) + JSON.stringify(err.message));
} else { } else {
console.info('getUid ok!' + JSON.stringify(data)); console.info('getUid ok!' + JSON.stringify(data));
} }
...@@ -79,12 +77,12 @@ function getWantAgentCallback(err, data) { ...@@ -79,12 +77,12 @@ function getWantAgentCallback(err, data) {
try { try {
WantAgent.trigger(wantAgent, triggerInfo, triggerCallback); WantAgent.trigger(wantAgent, triggerInfo, triggerCallback);
} catch(err) { } catch(err) {
console.info('getUid failed!' + err.code + err.message); console.info('getUid failed!' + JSON.stringify(err.code) + JSON.stringify(err.message));
} }
} }
try{ try{
WantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback); WantAgent.getWantAgent(wantAgentInfo, getWantAgentCallback);
} catch(err){ } catch(err){
console.info('getWantAgent failed!' + err.code + err.message); console.info('getWantAgent failed!' + JSON.stringify(err.code) + JSON.stringify(err.message));
} }
``` ```
# web子系统ChangeLog # web子系统ChangeLog
OpenHarmony 3.2.9.1 sp8版本相较于OpenHarmony 3.2.8.1版本,web的API变更如下
## cl.web.1 删除无用错误码 ## cl.web.1 删除无用错误码
web子系统webviewController接口存在变更: web子系统webviewController接口存在变更:
......
# Readme
- [元能力](changelogs-ability.md)
- [帐号](changelogs-account_os_account.md)
- [ArkUI](changelogs-arkui.md)
- [多媒体-相机](changelogs-camera-sync.md)
- [公共基础类库-容器](changelogs-container.md)
- [分布式数据管理](changelogs-distributeddatamgr.md)
- [文件管理](changelogs-filemanagement.md)
- [输入法框架](changelogs-inputmethod-framworks.md)
- [文件管理-媒体库](changelogs-mediaLibrary.md)
- [多媒体](changelogs-multimedia.md)
- [基础通信-NFC](changelogs-nfc.md)
- [事件通知](changelogs-notification.md)
- 位置服务
- [ohos.geoLocationManager](changelogs-ohos-geoLocationManager.md)
- [ohos.geoLocation](changelogs-ohos-geoLocation.md)
- [system.geolocation](changelogs-system-geolocation.md)
- [上传下载](changelogs-request.md)
- [资源调度](changelogs-resourceschedule.md)
- [安全](changelogs-security.md)
- [电话服务](changelogs-telephony.md)
- [时间服务](changelogs-time.md)
- [公共基础类库-URL](changelogs-url.md)
- [用户IAM](changelogs-useriam.md)
- [窗口](changelogs-window.md)
# 元能力子系统JS API变更Changelog # 元能力子系统JS API变更Changelog
OpenHarmony 3.2.10.1(Mr)版本相较于OpenHarmony 3.2.beta4版本,元能力子系统的API变更如下 ## cl.ability.1 接口迁移
ability子系统UIAbilityContext的接口requestPermissionsFromUser迁移到security子系统:
## cl.ability.1 接口迁移
ability子系统UIAbilityContext的接口requestPermissionsFromUser迁移到security子系统: 之前权限弹窗应用是基于UIAbility实现的,需要借助于UIAbilityContext的startAbilityForResult接口把授权结果带回给调用方,故把requestPermissionsFromUser接口暂时放在UIAbilityContext中。现在权限弹窗应用切换为基于ServiceExtensionAbility实现,不再需要借助UIAbilityContext的startAbilityForResult接口,因此把requestPermissionsFromUser接口迁移到security子系统。
之前权限弹窗应用是基于UIAbility实现的,需要借助于UIAbilityContext的startAbilityForResult接口把授权结果带回给调用方,故把requestPermissionsFromUser接口暂时放在UIAbilityContext中。现在权限弹窗应用切换为基于ServiceExtensionAbility实现,不再需要借助UIAbilityContext的startAbilityForResult接口,因此把requestPermissionsFromUser接口迁移到security子系统。 开发者需要根据以下说明对应用进行适配。
开发者需要根据以下说明对应用进行适配。 **变更影响**
**变更影响** 影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。
影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。 **关键的接口/组件变更**
**关键的接口/组件变更** | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| ------------------------- | ------------------- | ------------------------------------------------------------ | -------- |
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | | application/UIAbilityContext | UIAbilityContext | requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>): void; | 删除 |
| ------------------------- | ------------------- | ------------------------------------------------------------ | -------- | | application/UIAbilityContext | UIAbilityContext | requestPermissionsFromUser(permissions: Array<string>): Promise<PermissionRequestResult>; | 删除 |
| application/UIAbilityContext | UIAbilityContext | requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>): void; | 删除 | | @ohos.abilityAccessCtrl | AtManager | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; | 新增 |
| application/UIAbilityContext | UIAbilityContext | requestPermissionsFromUser(permissions: Array<string>): Promise<PermissionRequestResult>; | 删除 | | @ohos.abilityAccessCtrl | AtManager | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>) : Promise<PermissionRequestResult>; | 新增 |
| @ohos.abilityAccessCtrl | AtManager | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; | 新增 |
| @ohos.abilityAccessCtrl | AtManager | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>) : Promise<PermissionRequestResult>; | 新增 |
**适配指导**
**适配指导** 应用中调用requestPermissionsFromUser拉起权限弹窗应用可参考下列代码
应用中调用requestPermissionsFromUser拉起权限弹窗应用可参考下列代码 Stage模型下的示例:
Stage模型下的示例: ```ts
import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts';
```ts //UIAbility的onWindowStageCreate生命周期
import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts'; onWindowStageCreate() {
//UIAbility的onWindowStageCreate生命周期 let AtManager = abilityAccessCtrl.createAtManager();
onWindowStageCreate() { //requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
let AtManager = abilityAccessCtrl.createAtManager(); AtManager.requestPermissionsFromUser(this.context, ["ohos.permission.MANAGE_DISPOSED_APP_STATUS"]).then((data) => {
//requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗 console.log("data type:" + typeof(data));
AtManager.requestPermissionsFromUser(this.context, ["ohos.permission.MANAGE_DISPOSED_APP_STATUS"]).then((data) => { console.log("data:" + data);
console.log("data type:" + typeof(data)); console.log("data permissions:" + data.permissions);
console.log("data:" + data); console.log("data result:" + data.authResults);
console.log("data permissions:" + data.permissions); }).catch((err) => {
console.log("data result:" + data.authResults); console.error('Failed to start ability', err.code);
}).catch((err) => { })
console.error('Failed to start ability', err.code); }
}) ```
}
```
## cl.ability.2 删除标记为废弃的API9接口
## cl.ability.2 删除标记为废弃的API9接口 [元能力异常处理整改](../OpenHarmony_3.2.8.3/changelogs-ability.md)将部分API9接口标记为了废弃,根据OpenHarmony接口规范,需要删除标记为废弃的API9接口。
[元能力异常处理整改](../OpenHarmony_3.2.8.3/changelogs-ability.md)将部分API9接口标记为了废弃,根据OpenHarmony接口规范,需要删除标记为废弃的API9接口。 **变更影响**
**变更影响** 基于此前版本开发的应用,需要将被删除的接口替换为新接口,否则会影响应用编译。
基于此前版本开发的应用,需要将被删除的接口替换为新接口,否则会影响应用编译。 **关键接口/组件变更**
**关键接口/组件变更** 接口文件被删除:
接口文件被删除: | 被删除接口 | 新接口 |
| ----------------------------------------------- | ----------------------------------------------- |
| 被删除接口 | 新接口 | | @ohos.application.Ability.d.ts | @ohos.app.ability.UIAbility.d.ts |
| ----------------------------------------------- | ----------------------------------------------- | | @ohos.application.AbilityConstant.d.ts | @ohos.app.ability.AbilityConstant.d.ts |
| @ohos.application.Ability.d.ts | @ohos.app.ability.UIAbility.d.ts | | @ohos.application.AbilityLifecycleCallback.d.ts | @ohos.app.ability.AbilityLifecycleCallback.d.ts |
| @ohos.application.AbilityConstant.d.ts | @ohos.app.ability.AbilityConstant.d.ts | | @ohos.application.AbilityStage.d.ts | @ohos.app.ability.AbilityStage.d.ts |
| @ohos.application.AbilityLifecycleCallback.d.ts | @ohos.app.ability.AbilityLifecycleCallback.d.ts | | @ohos.application.EnvironmentCallback.d.ts | @ohos.app.ability.EnvironmentCallback.d.ts |
| @ohos.application.AbilityStage.d.ts | @ohos.app.ability.AbilityStage.d.ts | | @ohos.application.ExtensionAbility.d.ts | @ohos.app.ability.ExtensionAbility.d.ts |
| @ohos.application.EnvironmentCallback.d.ts | @ohos.app.ability.EnvironmentCallback.d.ts | | @ohos.application.FormExtension.d.ts | @ohos.app.form.FormExtensionAbility.d.ts |
| @ohos.application.ExtensionAbility.d.ts | @ohos.app.ability.ExtensionAbility.d.ts | | @ohos.application.ServiceExtensionAbility.d.ts | @ohos.app.ability.ServiceExtensionAbility.d.ts |
| @ohos.application.FormExtension.d.ts | @ohos.app.form.FormExtensionAbility.d.ts | | @ohos.application.StartOptions.d.ts | @ohos.app.ability.StartOptions.d.ts |
| @ohos.application.ServiceExtensionAbility.d.ts | @ohos.app.ability.ServiceExtensionAbility.d.ts | | @ohos.application.context.d.ts | @ohos.app.ability.common.d.ts |
| @ohos.application.StartOptions.d.ts | @ohos.app.ability.StartOptions.d.ts | | @ohos.application.errorManager.d.ts | @ohos.app.ability.errorManager.d.ts |
| @ohos.application.context.d.ts | @ohos.app.ability.common.d.ts |
| @ohos.application.errorManager.d.ts | @ohos.app.ability.errorManager.d.ts | 接口、属性被删除:
接口、属性被删除: - @ohos.application.Configuration.d.ts
- Configuration 的 direction、screenDensity、displayId、hasPointerDevice 被删除。可以使用 @ohos.app.ability.Configuration.d.ts 的 Configuration替换。
- @ohos.application.Configuration.d.ts - @ohos.application.ConfigurationConstant.d.ts
- Configuration 的 direction、screenDensity、displayId、hasPointerDevice 被删除。可以使用 @ohos.app.ability.Configuration.d.ts 的 Configuration替换。 - 枚举 Direction 和 ScreenDensity 被删除。可以使用 @ohos.app.ability.ConfigurationConstant.d.ts 的枚举 Direction 和 ScreenDensity 替换。
- @ohos.application.ConfigurationConstant.d.ts - @ohos.application.abilityManager.d.ts
- 枚举 Direction 和 ScreenDensity 被删除。可以使用 @ohos.app.ability.ConfigurationConstant.d.ts 的枚举 Direction 和 ScreenDensity 替换。 - 方法 getExtensionRunningInfos 和 getTopAbility 被删除。可以使用 @ohos.app.ability.abilityManager.d.ts 的同名方法替换。
- @ohos.application.abilityManager.d.ts - @ohos.application.appManager.d.ts
- 方法 getExtensionRunningInfos 和 getTopAbility 被删除。可以使用 @ohos.app.ability.abilityManager.d.ts 的同名方法替换。 - 枚举 ApplicationState 和 ProcessState 被删除。可以使用 @ohos.app.ability.appManager.d.ts 的枚举 ApplicationState 和 ProcessState 替换。
- @ohos.application.appManager.d.ts - 方法 registerApplicationStateObserver 和 getProcessRunningInformation被删除。可以使用 @ohos.app.ability.appManager.d.ts 的同名方法替换。
- 枚举 ApplicationState 和 ProcessState 被删除。可以使用 @ohos.app.ability.appManager.d.ts 的枚举 ApplicationState 和 ProcessState 替换。 - @ohos.application.formHost.d.ts
- 方法 registerApplicationStateObserver 和 getProcessRunningInformation被删除。可以使用 @ohos.app.ability.appManager.d.ts 的同名方法替换。 - 方法 shareForm 和 notifyFormsPrivacyProtected 被删除。可以使用 @ohos.app.form.formHost.d.ts 的同名方法替换。
- @ohos.application.formHost.d.ts - @ohos.application.formInfo.d.ts
- 方法 shareForm 和 notifyFormsPrivacyProtected 被删除。可以使用 @ohos.app.form.formHost.d.ts 的同名方法替换。 - 枚举 FormType 的 eTS 被删除,可以使用 @ohos.app.form.formInfo.d.ts 的 FormType 中的 eTS 替换。
- @ohos.application.formInfo.d.ts - 枚举 FormParam 的 IDENTITY_KEY、BUNDLE_NAME_KEY、ABILITY_NAME_KEY、DEVICE_ID_KEY 被删除,可以使用 @ohos.app.form.formInfo.d.ts 的 FormParam 中的同名枚举替换。
- 枚举 FormType 的 eTS 被删除,可以使用 @ohos.app.form.formInfo.d.ts 的 FormType 中的 eTS 替换。 - 接口 FormInfoFilter 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormInfoFilter 替换。
- 枚举 FormParam 的 IDENTITY_KEY、BUNDLE_NAME_KEY、ABILITY_NAME_KEY、DEVICE_ID_KEY 被删除,可以使用 @ohos.app.form.formInfo.d.ts 的 FormParam 中的同名枚举替换。 - 枚举 FormDimension 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormDimension 替换。
- 接口 FormInfoFilter 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormInfoFilter 替换。 - 枚举 VisibilityType 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 VisibilityType 替换。
- 枚举 FormDimension 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormDimension 替换。 - @ohos.wantAgent.d.ts
- 枚举 VisibilityType 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 VisibilityType 替换。 - 方法 trigger 和 getOperationType 被删除。可以使用 @ohos.app.ability.wantAgent.d.ts 的同名方法替换。
- @ohos.wantAgent.d.ts - application/ApplicationContext.d.ts
- 方法 trigger 和 getOperationType 被删除。可以使用 @ohos.app.ability.wantAgent.d.ts 的同名方法替换。 - 方法 registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback 被删除。可以使用 on、off 替换。
- application/ApplicationContext.d.ts - application/ServiceExtensionContext.d.ts
- 方法 registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback 被删除。可以使用 on、off 替换。 - 方法 connectAbility、connectAbilityWithAccount、disconnectAbility 被删除。可以使用 connectServiceExtensionAbility、connectServiceExtensionAbilityWithAccount、disconnectServiceExtensionAbility 替换。
- application/ServiceExtensionContext.d.ts - @ohos.application.FormExtension.d.ts
- 方法 connectAbility、connectAbilityWithAccount、disconnectAbility 被删除。可以使用 connectServiceExtensionAbility、connectServiceExtensionAbilityWithAccount、disconnectServiceExtensionAbility 替换。 - 生命周期onCreate、onCastToNormal、onUpdate、onVisibilityChange、onEvent、onDestroy、onAcquireFormState、onShare 被删除。可以使用@ohos.app.form.FormExtensionAbility.d.ts的onAddForm、onCastToNormalForm、onUpdateForm、onChangeFormVisibility、onFormEvent、onRemoveForm、onAcquireFormState、onShareForm
- @ohos.application.FormExtension.d.ts - @ohos.application.abilityDelegatorRegistry.d.ts
- 生命周期onCreate、onCastToNormal、onUpdate、onVisibilityChange、onEvent、onDestroy、onAcquireFormState、onShare 被删除。可以使用@ohos.app.form.FormExtensionAbility.d.ts的onAddForm、onCastToNormalForm、onUpdateForm、onChangeFormVisibility、onFormEvent、onRemoveForm、onAcquireFormState、onShareForm - 导出类 AbilityDelegator、AbilityDelegatorArgs、AbilityMonitor、ShellCmdResult 被删除。可以使用@ohos.app.ability.abilityDelegatorRegistry.d.ts中的同名导出类替换。
- @ohos.application.abilityDelegatorRegistry.d.ts - @ohos.application.abilityManager.d.ts
- 导出类 AbilityDelegator、AbilityDelegatorArgs、AbilityMonitor、ShellCmdResult 被删除。可以使用@ohos.app.ability.abilityDelegatorRegistry.d.ts中的同名导出类替换。 - 导出类 AbilityRunningInfo、ExtensionRunningInfo 被删除。可以使用@ohos.app.ability.abilityManager.d.ts中的同名导出类替换。
- @ohos.application.abilityManager.d.ts - @ohos.application.appManager.d.ts
- 导出类 AbilityRunningInfo、ExtensionRunningInfo 被删除。可以使用@ohos.app.ability.abilityManager.d.ts中的同名导出类替换。 - 导出类 AbilityStateData、AppStateData、ApplicationStateObserver、ProcessRunningInfo、ProcessRunningInformation 被删除。可以使用@ohos.app.ability.appManager.d.ts中的同名导出类替换。
- @ohos.application.appManager.d.ts - @ohos.application.missionManager.d.ts
- 导出类 AbilityStateData、AppStateData、ApplicationStateObserver、ProcessRunningInfo、ProcessRunningInformation 被删除。可以使用@ohos.app.ability.appManager.d.ts中的同名导出类替换。 - 导出类 MissionInfo、MissionListener、MissionSnapshot 被删除。可以使用@ohos.app.ability.missionManager.d.ts中的同名导出类替换。
- @ohos.application.missionManager.d.ts - @ohos.wantAgent.d.ts
- 导出类 MissionInfo、MissionListener、MissionSnapshot 被删除。可以使用@ohos.app.ability.missionManager.d.ts中的同名导出类替换。 - 导出类 TriggerInfo、WantAgentInfo 被删除。可以使用@ohos.app.ability.wantAgent.d.ts中的同名导出类替换。
- @ohos.wantAgent.d.ts
- 导出类 TriggerInfo、WantAgentInfo 被删除。可以使用@ohos.app.ability.wantAgent.d.ts中的同名导出类替换。
**适配指导**
**适配指导** 如上所述,仅少数接口修改了接口名的如注册回调函数(registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback)和连接断开 ServiceExtensionAbility(connectAbility、connectAbilityWithAccount、disconnectAbility),卡片生命周期等需要替换成新的接口名。
如上所述,仅少数接口修改了接口名的如注册回调函数(registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback)和连接断开 ServiceExtensionAbility(connectAbility、connectAbilityWithAccount、disconnectAbility),卡片生命周期等需要替换成新的接口名。 绝大多数接口平移到了新的namespace中,所以可以通过修改import来解决适配问题:
绝大多数接口平移到了新的namespace中,所以可以通过修改import来解决适配问题: 如原先接口使用了@ohos.application.Ability
如原先接口使用了@ohos.application.Ability ```js
import Ability from '@ohos.application.Ability';
```js ```
import Ability from '@ohos.application.Ability';
``` 可以通过直接修改import,来切换到新的namespace上:
可以通过直接修改import,来切换到新的namespace上: ```js
import Ability from '@ohos.app.ability.UIAbility';
```js ```
import Ability from '@ohos.app.ability.UIAbility';
``` 此外还需要适配异常处理,具体参考新接口的接口文档。
此外还需要适配异常处理,具体参考新接口的接口文档。 ## cl.ability.2 appRecovery接口中RestartFlag属性名称变更,删除了未支持的属性
appRecovery接口中RestartFlag枚举命名从特定故障发生后**不重启**改成了特定故障发生后**重启**
删除了CPP_CRASH_NO_RESTART。
**变更影响**
3.2.10.6版本之前使用CPP_CRASH_NO_RESTART/JS_CRASH_NO_RESTART/APP_FREEZE_NO_RESTART类型开发的应用,在3.2.10.6版本之后行为会发生变化。
**关键接口/组件变更**
**RestartFlag** <sup>9+</sup>
变更前:
| 名称 | 值 | 说明 |
| --------------------- | ------ | -------------------------------- |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | 0x0001 | 发生CPP_CRASH时**不重启**应用。 |
| JS_CRASH_NO_RESTART | 0x0002 | 发生JS_CRASH时**不重启**应用。 |
| APP_FREEZE_NO_RESTART | 0x0004 | 发生APP_FREEZE时**不重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
变更后:
| 名称 | 值 | 说明 |
| ----------------------- | ------ | ------------------------------ |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | NA | **删除**,不支持该场景的重启。 |
| RESTART_WHEN_JS_CRASH | 0x0001 | 发生JS_CRASH时**重启**应用。 |
| RESTART_WHEN_APP_FREEZE | 0x0002 | 发生APP_FREEZE时**重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
**适配指导**
按新的语义进行适配。
# arkui子系统ChangeLog # arkui子系统ChangeLog
## cl.arkui.1 状态变量数据类型声明使用限制 ## cl.arkui.1 状态变量数据类型声明使用限制
1. 所有的状态装饰器变量需要显式声明变量类型,不允许声明any,不支持Date数据类型。 1. 所有的状态装饰器变量需要显式声明变量类型,不允许声明any,不支持Date数据类型。
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
@State message: string = 'Hello World' @State message: string = 'Hello World'
// 错误写法: @State message: ResourceStr = $r('app.string.hello') // 错误写法: @State message: ResourceStr = $r('app.string.hello')
@State resourceStr: Resource = $r('app.string.hello') @State resourceStr: Resource = $r('app.string.hello')
build() { build() {
Row() { Row() {
Column() { Column() {
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
@State selectedDate: Date = new Date('2021-08-08') @State selectedDate: Date = new Date('2021-08-08')
``` ```
3. @State、@Provide、 @Link和@Consume四种状态变量使用框架提供的Length、ResourceStr、ResourceColor, 3. @State、@Provide、 @Link和@Consume四种状态变量使用框架提供的Length、ResourceStr、ResourceColor,
编译拦截报错。 编译拦截报错。
```ts ```ts
/* ArkTS:ERROR The state variable type here is 'ResourceStr', it contains both a simple type and an object type, /* ArkTS:ERROR The state variable type here is 'ResourceStr', it contains both a simple type and an object type,
which are not allowed to be defined for state variable of a struct.*/ which are not allowed to be defined for state variable of a struct.*/
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
1. 状态装饰器变量声明具体的变量类型替代any; 1. 状态装饰器变量声明具体的变量类型替代any;
2. 使用Date对象的状态装饰器变量,修改为不加状态装饰器修饰的常规变量; 2. 使用Date对象的状态装饰器变量,修改为不加状态装饰器修饰的常规变量;
3. 因为Length(string|number|Resource), ResourceStr(string|Resource), ResourceColor(string|number|Color|Resource) 3. 因为Length(string|number|Resource), ResourceStr(string|Resource), ResourceColor(string|number|Color|Resource)
的三个类型是简单数据类型或引用数据类型的组合,使用@State、@Provide、 @Link和@Consume四种状态变量场景参考以下修改: 的三个类型是简单数据类型或引用数据类型的组合,使用@State、@Provide、 @Link和@Consume四种状态变量场景参考以下修改:
```ts ```ts
// 错误写法: // 错误写法:
@State message: ResourceStr = $r('app.string.hello') @State message: ResourceStr = $r('app.string.hello')
...@@ -111,29 +111,30 @@ ...@@ -111,29 +111,30 @@
@State resourceStr: Resource = $r('app.string.hello') @State resourceStr: Resource = $r('app.string.hello')
``` ```
## cl.arkui.2 自定义组件成员变量初始化的规则与约束。
## cl.arkui.2 自定义组件成员变量初始化的规则与约束
通过构造函数方法初始化成员变量,需要遵循如下规则: 通过构造函数方法初始化成员变量,需要遵循如下规则:
| **从父组件中的变量(右)到子组件中的变量(下)** | **regular** | **@State** | **@Link** | **@Prop** | **@Provide** | **@Consume** | **@ObjectLink** | | **从父组件中的变量(右)到子组件中的变量(下)** | **regular** | **@State** | **@Link** | **@Prop** | **@Provide** | **@Consume** | **@ObjectLink** |
| -------------------------- | ----------- | ---------- | --------- | --------- | ------------ | ------------ | --------------- | |---------------------------------|----------------------------|------------|-----------|-----------|--------------|--------------|------------------|
| **regular** | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 支持 | | **regular** | 支持 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 支持 |
| **@State** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **@State** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **@Link** | 不支持 | 支持(1) | 支持(1) | 支持(1) | 支持(1) | 支持(1) | 支持(1) | | **@Link** | 不支持 | 支持(1) | 支持(1) | 支持(1) | 支持(1) | 支持(1) | 支持(1) |
| **@Prop** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **@Prop** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **@Provide** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | | **@Provide** | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
| **@Consume** | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | | **@Consume** | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| **@ObjectLink** | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | | **@ObjectLink** | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| **从父组件中的变量(右)到子组件中的变量(下)** | **@StorageLink** | **@StorageProp** | **@LocalStorageLink** | **@LocalStorageProp** | | **从父组件中的变量(右)到子组件中的变量(下)** | **@StorageLink** | **@StorageProp** | **@LocalStorageLink** | **@LocalStorageProp** |
| -------------------------- | ---------------- | ---------------- | --------------------- | --------------------- | |------------------|------------------|------------------|-----------------------|------------------------|
| **regular** | 支持 | 不支持 | 不支持 | 不支持 | | **regular** | 支持 | 不支持 | 不支持 | 不支持 |
| **@State** | 支持 | 支持 | 支持 | 支持 | | **@State** | 支持 | 支持 | 支持 | 支持 |
| **@Link** | 支持(1) | 支持(1) | 支持(1) | 支持(1) | | **@Link** | 支持(1) | 支持(1) | 支持(1) | 支持(1) |
| **@Prop** | 支持 | 支持 | 支持 | 支持 | | **@Prop** | 支持 | 支持 | 支持 | 支持 |
| **@Provide** | 支持 | 支持 | 支持 | 支持 | | **@Provide** | 支持 | 支持 | 支持 | 支持 |
| **@Consume** | 不支持 | 不支持 | 不支持 | 不支持 | | **@Consume** | 不支持 | 不支持 | 不支持 | 不支持 |
| **@ObjectLink** | 不支持 | 不支持 | 不支持 | 不支持 | | **@ObjectLink** | 不支持 | 不支持 | 不支持 | 不支持 |
> **说明** > **说明**
> >
...@@ -172,7 +173,7 @@ ...@@ -172,7 +173,7 @@
2. 子组件的@ObjectLink变量不支持父组件装饰器变量的直接赋值,其父组件的源必须是数组的项或对象的属性,该数组或对象必现用`@State``@Link``@Provide``@Consume``@ObjectLink`装饰器修饰。 2. 子组件的@ObjectLink变量不支持父组件装饰器变量的直接赋值,其父组件的源必须是数组的项或对象的属性,该数组或对象必现用`@State``@Link``@Provide``@Consume``@ObjectLink`装饰器修饰。
```ts ```ts
let NextID : number = 0; let NextID : number = 0;
@Observed class ClassA { @Observed class ClassA {
public id : number; public id : number;
public c: number; public c: number;
...@@ -181,7 +182,7 @@ ...@@ -181,7 +182,7 @@
this.c = c; this.c = c;
} }
} }
@Component @Component
struct Child { struct Child {
@ObjectLink varA : ClassA; @ObjectLink varA : ClassA;
...@@ -191,7 +192,7 @@ ...@@ -191,7 +192,7 @@
} }
} }
} }
@Component @Component
struct Parent { struct Parent {
@Link linkValue: ClassA @Link linkValue: ClassA
...@@ -211,5 +212,121 @@ ...@@ -211,5 +212,121 @@
**适配指导** **适配指导**
1. 构造子组件时,不对子组件的`@LocalStorageLink`, `@LocalStorageProp`修饰的变量进行。 1. 构造子组件时,不对子组件的`@LocalStorageLink`, `@LocalStorageProp`修饰的变量进行。
如果需要在父组件中修改子组件的`@LocalStorageLink`, `@LocalStorageProp`修饰的变量,则使用LocalStorage提供的API接口方法(比如set方法)赋值。 如果需要在父组件中修改子组件的`@LocalStorageLink`, `@LocalStorageProp`修饰的变量,则使用LocalStorage提供的API接口方法(比如set方法)赋值。
2. @ObjectLink的使用指导请参考文档[@ObjectLink使用指导](../../../application-dev/quick-start/arkts-observed-and-objectlink.md) 2. @ObjectLink的使用指导请参考文档[@ObjectLink使用指导](../../../application-dev/quick-start/arkts-state-mgmt-page-level.md)
## cl.arkui.LocalStorage.1 get接口返回类型变更
**变更影响**
返回类型从get<T>(propName: string): T变更为get<T>(propName: string): T | undefined
应用不需要进行适配。
## cl.arkui.LocalStorage.2 setOrCreate参数newValue变成必选
**变更影响**
原接口声明:
```js
setOrCreate<T>(propName: string, newValue?: T): boolean
```
现接口声明:
```js
setOrCreate<T>(propName: string, newValue: T): boolean
```
第二个参数newValue变为必选。
如果应用调用这个接口没有指定newValue参数,在替换新的sdk后会编译不过,需要手动指定newValue。
**适配指导**
```js
let storage = new LocalStorage();
storage.setOrCreate('propA', 'hello');
```
## cl.arkui.LocalStorage.3 link参数和返回类型变更
**变更影响**
原接口声明:
```js
link<T>(propName: string, linkUser?: T, subscribersName?: string): T
```
现接口声明:
```js
link<T>(propName: string): SubscribedAbstractProperty<T>
```
1. link第二三个参数为框架内部调用,不应对外开发,所以将接口变更为一个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let linA = storage.link("PropA");
linA.set(50);
```
## cl.arkui.LocalStorage.4 setAndLink参数和返回类型变更
**变更影响**
原接口声明:
```js
setAndLink<T>(propName: string, defaultValue: T, linkUser?: T, subscribersName?: string): T
```
现接口声明:
```js
setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T>
```
1. setAndLink第三四个参数为框架内部调用,不应对外开发,所以将接口变更为2个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let linA = storage.setAndLink("PropA", "48")
linA.set(50);
```
## cl.arkui.LocalStorage.5 prop参数和返回类型变更
**变更影响**
原接口声明:
```js
prop<T>(propName: string, propUser?: T, subscribersName?: string): T
```
现接口声明:
```js
prop<S>(propName: string): SubscribedAbstractProperty<S>
```
1. prop第二三个参数为框架内部调用,不应对外开发,所以将接口变更为1个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let propA = storage.prop("PropA");
propA.set(51); // one-way sync
```
## cl.arkui.LocalStorage.6 setAndProp参数和返回类型变更
**变更影响**
原接口声明:
```js
setAndProp<T>(propName: string, defaultValue: T, propUser?: T, subscribersName?: string): T
```
现接口声明:
```js
setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S>
```
1. setAndProp第三四个参数为框架内部调用,不应对外开发,所以将接口变更为2个参数;
2. 返回类型T变更为SubscribedAbstractProperty;
**适配指导**
```js
let storage = new LocalStorage({"PropA": "47"});
let propA = storage.setAndProp("PropA", "48");
propA.set(51); // one-way sync
```
# 媒体子系统 JS API 变更 Changelog # 媒体子系统 JS API 变更 Changelog
OpenHarmony3.2.10.3 相对 OpenHarmony3.2 Beta4 版本,媒体子系统 camera 部件 API 变更如下
## cl.subsystemname.1 camera 接口变更 ## cl.subsystemname.1 camera 接口变更
1. camera 部件在 API9 版本全量改为 SystemAPI 1. camera 部件在 API9 版本全量改为 SystemAPI
2. 基于以下原因新增部分功能接口以及废弃部分接口: 2. 基于以下原因新增部分功能接口以及废弃部分接口:
...@@ -217,304 +215,304 @@ OpenHarmony3.2.10.3 相对 OpenHarmony3.2 Beta4 版本,媒体子系统 camera ...@@ -217,304 +215,304 @@ OpenHarmony3.2.10.3 相对 OpenHarmony3.2 Beta4 版本,媒体子系统 camera
10. CameraManager 中接口 createCaptureSession 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 createCaptureSession(callback: AsyncCallback<CaptureSession>): void; 以及 createCaptureSession(): Promise<CaptureSession>; 变更为 createCaptureSession(): CaptureSession; 10. CameraManager 中接口 createCaptureSession 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 createCaptureSession(callback: AsyncCallback<CaptureSession>): void; 以及 createCaptureSession(): Promise<CaptureSession>; 变更为 createCaptureSession(): CaptureSession;
参考代码如下: 参考代码如下:
``` ```
let captureSession = cameraManager.createCaptureSession(); let captureSession = cameraManager.createCaptureSession();
``` ```
11. 枚举 CameraType 中,枚举值名称 CAMERA_TYPE_UNSPECIFIED 变更为 CAMERA_TYPE_DEFAULT。 11. 枚举 CameraType 中,枚举值名称 CAMERA_TYPE_UNSPECIFIED 变更为 CAMERA_TYPE_DEFAULT。
12. CameraInput 中,on 接口返回值类型由 CameraInputError 变更为 BusinessError,因此旧接口 on(type: 'error', camera: CameraDevice, callback: ErrorCallback<CameraInputError>): void; 变更为 on(type: 'error', camera: CameraDevice, callback: ErrorCallback<BusinessError>): void; 12. CameraInput 中,on 接口返回值类型由 CameraInputError 变更为 BusinessError,因此旧接口 on(type: 'error', camera: CameraDevice, callback: ErrorCallback<CameraInputError>): void; 变更为 on(type: 'error', camera: CameraDevice, callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
let cameraDevice = cameras[0]; let cameraDevice = cameras[0];
cameraInput.on('error', cameraDevice, (BusinessError) => { cameraInput.on('error', cameraDevice, (BusinessError) => {
}) })
``` ```
13. CaptureSession 中接口 beginConfig 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 beginConfig(callback: AsyncCallback<void>): void; 以及 beginConfig(): Promise<void>; 变更为 beginConfig(): void; 13. CaptureSession 中接口 beginConfig 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 beginConfig(callback: AsyncCallback<void>): void; 以及 beginConfig(): Promise<void>; 变更为 beginConfig(): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.beginConfig(); captureSession.beginConfig();
``` ```
14. CaptureSession 中接口 addInput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 addInput(cameraInput: CameraInput, callback: AsyncCallback<void>): void; 以及 addInput(cameraInput: CameraInput): Promise<void>; 变更为 addInput(cameraInput: CameraInput): void; 14. CaptureSession 中接口 addInput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 addInput(cameraInput: CameraInput, callback: AsyncCallback<void>): void; 以及 addInput(cameraInput: CameraInput): Promise<void>; 变更为 addInput(cameraInput: CameraInput): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.addInput(cameraInput); captureSession.addInput(cameraInput);
``` ```
15. CaptureSession 中接口 removeInput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 removeInput(cameraInput: CameraInput, callback: AsyncCallback<void>): void; 以及 removeInput(cameraInput: CameraInput): Promise<void>; 变更为 removeInput(cameraInput: CameraInput): void; 15. CaptureSession 中接口 removeInput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 removeInput(cameraInput: CameraInput, callback: AsyncCallback<void>): void; 以及 removeInput(cameraInput: CameraInput): Promise<void>; 变更为 removeInput(cameraInput: CameraInput): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.removeInput(cameraInput); captureSession.removeInput(cameraInput);
``` ```
16. CaptureSession 中接口 addOutput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 addOutput(cameraOutput: CameraOutput, callback: AsyncCallback<void>): void; 以及 addOutput(cameraOutput: CameraOutput): Promise<void>; 变更为 addOutput(cameraOutput: CameraOutput): void; 16. CaptureSession 中接口 addOutput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 addOutput(cameraOutput: CameraOutput, callback: AsyncCallback<void>): void; 以及 addOutput(cameraOutput: CameraOutput): Promise<void>; 变更为 addOutput(cameraOutput: CameraOutput): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.addOutput(previewOutput); captureSession.addOutput(previewOutput);
``` ```
17. CaptureSession 中接口 removeOutput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 removeOutput(cameraOutput: CameraOutput, callback: AsyncCallback<void>): void; 以及 removeOutput(cameraOutput: CameraOutput): Promise<void>; 变更为 removeOutput(cameraOutput: CameraOutput): void; 17. CaptureSession 中接口 removeOutput 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 removeOutput(cameraOutput: CameraOutput, callback: AsyncCallback<void>): void; 以及 removeOutput(cameraOutput: CameraOutput): Promise<void>; 变更为 removeOutput(cameraOutput: CameraOutput): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.removeOutput(previewOutput); captureSession.removeOutput(previewOutput);
``` ```
18. CaptureSession 中接口 hasFlash 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 hasFlash(callback: AsyncCallback<boolean>): void; 以及 hasFlash(): Promise<boolean>; 变更为 hasFlash(): boolean; 18. CaptureSession 中接口 hasFlash 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 hasFlash(callback: AsyncCallback<boolean>): void; 以及 hasFlash(): Promise<boolean>; 变更为 hasFlash(): boolean;
参考代码如下: 参考代码如下:
``` ```
let status = captureSession.hasFlash(); let status = captureSession.hasFlash();
``` ```
19. CaptureSession 中接口 isFlashModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isFlashModeSupported(flashMode: FlashMode, callback: AsyncCallback<boolean>): void; 以及 isFlashModeSupported(flashMode: FlashMode): Promise<boolean>; 变更为 isFlashModeSupported(flashMode: FlashMode): boolean; 19. CaptureSession 中接口 isFlashModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isFlashModeSupported(flashMode: FlashMode, callback: AsyncCallback<boolean>): void; 以及 isFlashModeSupported(flashMode: FlashMode): Promise<boolean>; 变更为 isFlashModeSupported(flashMode: FlashMode): boolean;
参考代码如下: 参考代码如下:
``` ```
let status = captureSession.isFlashModeSupported(camera.FlashMode.FLASH_MODE_AUTO); let status = captureSession.isFlashModeSupported(camera.FlashMode.FLASH_MODE_AUTO);
``` ```
20. CaptureSession 中接口 getFlashMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFlashMode(callback: AsyncCallback<FlashMode>): void; 以及 getFlashMode(): Promise<FlashMode>; 变更为 getFlashMode(): FlashMode; 20. CaptureSession 中接口 getFlashMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFlashMode(callback: AsyncCallback<FlashMode>): void; 以及 getFlashMode(): Promise<FlashMode>; 变更为 getFlashMode(): FlashMode;
参考代码如下: 参考代码如下:
``` ```
let flashMode = captureSession.getFlashMode(); let flashMode = captureSession.getFlashMode();
``` ```
21. CaptureSession 中接口 isExposureModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isExposureModeSupported(aeMode: ExposureMode, callback: AsyncCallback<boolean>): void; 以及 isExposureModeSupported(aeMode: ExposureMode): Promise<boolean>; 变更为 isExposureModeSupported(aeMode: ExposureMode): boolean; 21. CaptureSession 中接口 isExposureModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isExposureModeSupported(aeMode: ExposureMode, callback: AsyncCallback<boolean>): void; 以及 isExposureModeSupported(aeMode: ExposureMode): Promise<boolean>; 变更为 isExposureModeSupported(aeMode: ExposureMode): boolean;
参考代码如下: 参考代码如下:
``` ```
let isSupported = captureSession.isExposureModeSupported(camera.ExposureMode.EXPOSURE_MODE_LOCKED); let isSupported = captureSession.isExposureModeSupported(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
``` ```
22. CaptureSession 中接口 getExposureMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureMode(callback: AsyncCallback<ExposureMode>): void; 以及 getExposureMode(): Promise<ExposureMode>; 变更为 getExposureMode(): ExposureMode; 22. CaptureSession 中接口 getExposureMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureMode(callback: AsyncCallback<ExposureMode>): void; 以及 getExposureMode(): Promise<ExposureMode>; 变更为 getExposureMode(): ExposureMode;
参考代码如下: 参考代码如下:
``` ```
let exposureMode = captureSession.getExposureMode(); let exposureMode = captureSession.getExposureMode();
``` ```
23. CaptureSession 中接口 setExposureMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setExposureMode(aeMode: ExposureMode, callback: AsyncCallback<void>): void; 以及 setExposureMode(aeMode: ExposureMode): Promise<void>; 变更为 setExposureMode(aeMode: ExposureMode): void; 23. CaptureSession 中接口 setExposureMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setExposureMode(aeMode: ExposureMode, callback: AsyncCallback<void>): void; 以及 setExposureMode(aeMode: ExposureMode): Promise<void>; 变更为 setExposureMode(aeMode: ExposureMode): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.setExposureMode(camera.ExposureMode.EXPOSURE_MODE_LOCKED); captureSession.setExposureMode(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
``` ```
24. CaptureSession 中接口 getMeteringPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getMeteringPoint(callback: AsyncCallback<Point>): void; 以及 getMeteringPoint(): Promise<Point>; 变更为 getMeteringPoint(): Point; 24. CaptureSession 中接口 getMeteringPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getMeteringPoint(callback: AsyncCallback<Point>): void; 以及 getMeteringPoint(): Promise<Point>; 变更为 getMeteringPoint(): Point;
参考代码如下: 参考代码如下:
``` ```
let exposurePoint = captureSession.getMeteringPoint(); let exposurePoint = captureSession.getMeteringPoint();
``` ```
25. CaptureSession 中接口 setMeteringPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setMeteringPoint(point: Point, callback: AsyncCallback<void>): void; 以及 setMeteringPoint(point: Point): Promise<void>; 变更为 setMeteringPoint(point: Point): void; 25. CaptureSession 中接口 setMeteringPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setMeteringPoint(point: Point, callback: AsyncCallback<void>): void; 以及 setMeteringPoint(point: Point): Promise<void>; 变更为 setMeteringPoint(point: Point): void;
参考代码如下: 参考代码如下:
``` ```
let Point2 = {x: 2, y: 2}; let Point2 = {x: 2, y: 2};
captureSession.setMeteringPoint(Point2); captureSession.setMeteringPoint(Point2);
``` ```
26. CaptureSession 中接口 getExposureBiasRange 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureBiasRange(callback: AsyncCallback<Array<number>>): void; 以及 getExposureBiasRange(): Promise<Array<number>>; 变更为 getExposureBiasRange(): Array<number>; 26. CaptureSession 中接口 getExposureBiasRange 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureBiasRange(callback: AsyncCallback<Array<number>>): void; 以及 getExposureBiasRange(): Promise<Array<number>>; 变更为 getExposureBiasRange(): Array<number>;
参考代码如下: 参考代码如下:
``` ```
let biasRangeArray = captureSession.getExposureBiasRange(); let biasRangeArray = captureSession.getExposureBiasRange();
``` ```
27. CaptureSession 中接口 setExposureBias 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setExposureBias(exposureBias: number, callback: AsyncCallback<void>): void; 以及 setExposureBias(exposureBias: number): Promise<void>; 变更为 setExposureBias(exposureBias: number): void; 27. CaptureSession 中接口 setExposureBias 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setExposureBias(exposureBias: number, callback: AsyncCallback<void>): void; 以及 setExposureBias(exposureBias: number): Promise<void>; 变更为 setExposureBias(exposureBias: number): void;
参考代码如下: 参考代码如下:
``` ```
let exposureBias = biasRangeArray[0]; let exposureBias = biasRangeArray[0];
captureSession.setExposureBias(exposureBias); captureSession.setExposureBias(exposureBias);
``` ```
28. CaptureSession 中接口 getExposureValue 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureValue(callback: AsyncCallback<number>): void; 以及 getExposureValue(): Promise<number>; 变更为 getExposureValue(): number; 28. CaptureSession 中接口 getExposureValue 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getExposureValue(callback: AsyncCallback<number>): void; 以及 getExposureValue(): Promise<number>; 变更为 getExposureValue(): number;
参考代码如下: 参考代码如下:
``` ```
let exposureValue = captureSession.getExposureValue(); let exposureValue = captureSession.getExposureValue();
``` ```
29. CaptureSession 中接口 isFocusModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isFocusModeSupported(afMode: FocusMode, callback: AsyncCallback<boolean>): void; 以及 isFocusModeSupported(afMode: FocusMode): Promise<boolean>; 变更为 isFocusModeSupported(afMode: FocusMode): boolean; 29. CaptureSession 中接口 isFocusModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isFocusModeSupported(afMode: FocusMode, callback: AsyncCallback<boolean>): void; 以及 isFocusModeSupported(afMode: FocusMode): Promise<boolean>; 变更为 isFocusModeSupported(afMode: FocusMode): boolean;
参考代码如下: 参考代码如下:
``` ```
let status = captureSession.isFocusModeSupported(camera.FocusMode.FOCUS_MODE_AUTO); let status = captureSession.isFocusModeSupported(camera.FocusMode.FOCUS_MODE_AUTO);
``` ```
30. CaptureSession 中接口 getFocusMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocusMode(callback: AsyncCallback<FocusMode>): void; 以及 getFocusMode(): Promise<FocusMode>; 变更为 getFocusMode(): FocusMode; 30. CaptureSession 中接口 getFocusMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocusMode(callback: AsyncCallback<FocusMode>): void; 以及 getFocusMode(): Promise<FocusMode>; 变更为 getFocusMode(): FocusMode;
参考代码如下: 参考代码如下:
``` ```
let afMode = captureSession.getFocusMode(); let afMode = captureSession.getFocusMode();
``` ```
31. CaptureSession 中接口 setFocusMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setFocusMode(afMode: FocusMode, callback: AsyncCallback<void>): void; 以及 setFocusMode(afMode: FocusMode): Promise<void>; 变更为 setFocusMode(afMode: FocusMode): void; 31. CaptureSession 中接口 setFocusMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setFocusMode(afMode: FocusMode, callback: AsyncCallback<void>): void; 以及 setFocusMode(afMode: FocusMode): Promise<void>; 变更为 setFocusMode(afMode: FocusMode): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.setFocusMode(camera.FocusMode.FOCUS_MODE_AUTO); captureSession.setFocusMode(camera.FocusMode.FOCUS_MODE_AUTO);
``` ```
32. CaptureSession 中接口 setFocusPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setFocusPoint(point: Point, callback: AsyncCallback<void>): void; 以及 setFocusPoint(point: Point): Promise<void>; 变更为 setFocusPoint(point: Point): void; 32. CaptureSession 中接口 setFocusPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setFocusPoint(point: Point, callback: AsyncCallback<void>): void; 以及 setFocusPoint(point: Point): Promise<void>; 变更为 setFocusPoint(point: Point): void;
参考代码如下: 参考代码如下:
``` ```
let Point2 = {x: 2, y: 2}; let Point2 = {x: 2, y: 2};
captureSession.setFocusPoint(Point2); captureSession.setFocusPoint(Point2);
``` ```
33. CaptureSession 中接口 getFocusPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocusPoint(callback: AsyncCallback<Point>): void; 以及 getFocusPoint(): Promise<Point>; 变更为 getFocusPoint(): Point; 33. CaptureSession 中接口 getFocusPoint 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocusPoint(callback: AsyncCallback<Point>): void; 以及 getFocusPoint(): Promise<Point>; 变更为 getFocusPoint(): Point;
参考代码如下: 参考代码如下:
``` ```
let point = captureSession.getFocusPoint(); let point = captureSession.getFocusPoint();
``` ```
34. CaptureSession 中接口 getFocalLength 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocalLength(callback: AsyncCallback<number>): void; 以及 getFocalLength(): Promise<number>; 变更为 getFocalLength(): number; 34. CaptureSession 中接口 getFocalLength 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getFocalLength(callback: AsyncCallback<number>): void; 以及 getFocalLength(): Promise<number>; 变更为 getFocalLength(): number;
参考代码如下: 参考代码如下:
``` ```
let focalLength = captureSession.getFocalLength(); let focalLength = captureSession.getFocalLength();
``` ```
35. CaptureSession 中接口 getZoomRatioRange 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getZoomRatioRange(callback: AsyncCallback<Array<number>>): void; 以及 getZoomRatioRange(): Promise<Array<number>>; 变更为 getZoomRatioRange(): Array<number>; 35. CaptureSession 中接口 getZoomRatioRange 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getZoomRatioRange(callback: AsyncCallback<Array<number>>): void; 以及 getZoomRatioRange(): Promise<Array<number>>; 变更为 getZoomRatioRange(): Array<number>;
参考代码如下: 参考代码如下:
``` ```
let zoomRatioRange = captureSession.getZoomRatioRange(); let zoomRatioRange = captureSession.getZoomRatioRange();
``` ```
36. CaptureSession 中接口 getZoomRatio 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getZoomRatio(callback: AsyncCallback<number>): void; 以及 getZoomRatio(): Promise<number>; 变更为 getZoomRatio(): number; 36. CaptureSession 中接口 getZoomRatio 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getZoomRatio(callback: AsyncCallback<number>): void; 以及 getZoomRatio(): Promise<number>; 变更为 getZoomRatio(): number;
参考代码如下: 参考代码如下:
``` ```
let zoomRatio = captureSession.getZoomRatio(); let zoomRatio = captureSession.getZoomRatio();
``` ```
37. CaptureSession 中接口 setZoomRatio 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setZoomRatio(zoomRatio: number, callback: AsyncCallback<void>): void; 以及 setZoomRatio(zoomRatio: number): Promise<void>; 变更为 setZoomRatio(zoomRatio: number): void; 37. CaptureSession 中接口 setZoomRatio 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setZoomRatio(zoomRatio: number, callback: AsyncCallback<void>): void; 以及 setZoomRatio(zoomRatio: number): Promise<void>; 变更为 setZoomRatio(zoomRatio: number): void;
参考代码如下: 参考代码如下:
``` ```
let zoomRatio = zoomRatioRange[0]; let zoomRatio = zoomRatioRange[0];
captureSession.setZoomRatio(zoomRatio); captureSession.setZoomRatio(zoomRatio);
``` ```
38. CaptureSession 中接口 isVideoStabilizationModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode, callback: AsyncCallback<boolean>): void; 以及 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): Promise<boolean>; 变更为 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): boolean; 38. CaptureSession 中接口 isVideoStabilizationModeSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode, callback: AsyncCallback<boolean>): void; 以及 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): Promise<boolean>; 变更为 isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): boolean;
参考代码如下: 参考代码如下:
``` ```
let isSupported = captureSession.isVideoStabilizationModeSupported(camera.VideoStabilizationMode.OFF); let isSupported = captureSession.isVideoStabilizationModeSupported(camera.VideoStabilizationMode.OFF);
``` ```
39. CaptureSession 中接口 getActiveVideoStabilizationMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getActiveVideoStabilizationMode(callback: AsyncCallback<VideoStabilizationMode>): void; 以及 getActiveVideoStabilizationMode(): Promise<VideoStabilizationMode>; 变更为 getActiveVideoStabilizationMode(): VideoStabilizationMode; 39. CaptureSession 中接口 getActiveVideoStabilizationMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 getActiveVideoStabilizationMode(callback: AsyncCallback<VideoStabilizationMode>): void; 以及 getActiveVideoStabilizationMode(): Promise<VideoStabilizationMode>; 变更为 getActiveVideoStabilizationMode(): VideoStabilizationMode;
参考代码如下: 参考代码如下:
``` ```
let vsMode = captureSession.getActiveVideoStabilizationMode(); let vsMode = captureSession.getActiveVideoStabilizationMode();
``` ```
40. CaptureSession 中接口 setVideoStabilizationMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setVideoStabilizationMode(mode: VideoStabilizationMode, callback: AsyncCallback<void>): void; 以及 setVideoStabilizationMode(mode: VideoStabilizationMode): Promise<void>; 变更为 setVideoStabilizationMode(mode: VideoStabilizationMode): void; 40. CaptureSession 中接口 setVideoStabilizationMode 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 setVideoStabilizationMode(mode: VideoStabilizationMode, callback: AsyncCallback<void>): void; 以及 setVideoStabilizationMode(mode: VideoStabilizationMode): Promise<void>; 变更为 setVideoStabilizationMode(mode: VideoStabilizationMode): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.setVideoStabilizationMode(camera.VideoStabilizationMode.OFF); captureSession.setVideoStabilizationMode(camera.VideoStabilizationMode.OFF);
``` ```
41. CaptureSession 中,on(type: 'error') callback 类型由 ErrorCallback<CaptureSessionError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<CaptureSessionError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void; 41. CaptureSession 中,on(type: 'error') callback 类型由 ErrorCallback<CaptureSessionError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<CaptureSessionError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
captureSession.on('error', (BusinessError) => { captureSession.on('error', (BusinessError) => {
}) })
``` ```
42. PreviewOutput 中,on(type: 'error') callback 类型由 ErrorCallback<PreviewOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<PreviewOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void; 42. PreviewOutput 中,on(type: 'error') callback 类型由 ErrorCallback<PreviewOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<PreviewOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
previewOutput.on('error', (BusinessError) => { previewOutput.on('error', (BusinessError) => {
}) })
``` ```
43. PhotoOutput 中接口 isMirrorSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isMirrorSupported(callback: AsyncCallback<boolean>): void; 以及 isMirrorSupported(): Promise<boolean>; 变更为 isMirrorSupported(): boolean; 43. PhotoOutput 中接口 isMirrorSupported 返回方式由异步 callback 跟异步 promise 变更为同步返回,因此旧接口 isMirrorSupported(callback: AsyncCallback<boolean>): void; 以及 isMirrorSupported(): Promise<boolean>; 变更为 isMirrorSupported(): boolean;
参考代码如下: 参考代码如下:
``` ```
let isSupported = photoOutput.isMirrorSupported(); let isSupported = photoOutput.isMirrorSupported();
``` ```
44. PhotoOutput 中,on(type: 'error') callback 类型由 ErrorCallback<PhotoOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<PhotoOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void; 44. PhotoOutput 中,on(type: 'error') callback 类型由 ErrorCallback<PhotoOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<PhotoOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
PhotoOutput.on('error', (BusinessError) => { PhotoOutput.on('error', (BusinessError) => {
}) })
``` ```
45. VideoOutput 中,on(type: 'error') callback 类型由 ErrorCallback<VideoOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<VideoOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void; 45. VideoOutput 中,on(type: 'error') callback 类型由 ErrorCallback<VideoOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<VideoOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
VideoOutput.on('error', (BusinessError) => { VideoOutput.on('error', (BusinessError) => {
}) })
``` ```
46. MetadataOutput 中,on(type: 'error') callback 类型由 ErrorCallback<MetadataOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<MetadataOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void; 46. MetadataOutput 中,on(type: 'error') callback 类型由 ErrorCallback<MetadataOutputError> 变更为 ErrorCallback<BusinessError>,因此旧接口 on(type: 'error', callback: ErrorCallback<MetadataOutputError>): void; 变更为 on(type: 'error', callback: ErrorCallback<BusinessError>): void;
参考代码如下: 参考代码如下:
``` ```
MetadataOutput.on('error', (BusinessError) => { MetadataOutput.on('error', (BusinessError) => {
......
# commonlibrary子系统JS API变更Changelog # 公共基础类库子系统JS API变更Changelog
OpenHarmony 3.2.10.1(Mr)版本相较于OpenHarmony 3.2.beta4版本,container子系统的API变更如下
## cl.公共基础类库子系统.1 错误码及信息变更 ## cl.公共基础类库子系统.1 错误码及信息变更
公共基础类库子系统子系统中ArrayList、List、LinkedList、Stack、Queue、Deque、PlainArray、LightWeightMap、LightWeightSet、HashMap、HashSet、TreeMap、TreeSet类的接口抛出的错误码及信息变更: 公共基础类库子系统子系统中ArrayList、List、LinkedList、Stack、Queue、Deque、PlainArray、LightWeightMap、LightWeightSet、HashMap、HashSet、TreeMap、TreeSet类的接口抛出的错误码及信息变更:
......
# 分布式数据管理子系统JS API变更Changelog # 分布式数据管理子系统JS API变更Changelog
OpenHarmony 3.2.10.1(Mr)版本相较于OpenHarmony 3.2.beta4版本,分布式数据管理子系统的API变更如下
## cl.distributeddatamgr.1 接口变更 ## cl.distributeddatamgr.1 接口变更
distributeddatamgr子系统kv_store组件接口存在变更: distributeddatamgr子系统kv_store组件接口存在变更:
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现environment模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现environment模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
...@@ -28,7 +28,7 @@ import environment from '@ohos.file.environment'; ...@@ -28,7 +28,7 @@ import environment from '@ohos.file.environment';
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现securityLabel模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现securityLabel模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
...@@ -62,7 +62,7 @@ fs模块下Stat接口ino属性类型变更,由number变更为bigint,以适 ...@@ -62,7 +62,7 @@ fs模块下Stat接口ino属性类型变更,由number变更为bigint,以适
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现fileAccess模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现fileAccess模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
...@@ -84,7 +84,7 @@ import fileAccess from '@ohos.file.fileAccess'; ...@@ -84,7 +84,7 @@ import fileAccess from '@ohos.file.fileAccess';
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现fileExtensionInfo模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现fileExtensionInfo模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
...@@ -106,7 +106,7 @@ import fileExtensionInfo from '@ohos.file.fileExtensionInfo'; ...@@ -106,7 +106,7 @@ import fileExtensionInfo from '@ohos.file.fileExtensionInfo';
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现storageStatistics模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现storageStatistics模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
...@@ -128,7 +128,7 @@ import storageStatistics from '@ohos.file.storageStatistics'; ...@@ -128,7 +128,7 @@ import storageStatistics from '@ohos.file.storageStatistics';
**变更影响** **变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现volumeManager模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../OpenHarmony_3.2.8.1/changelogs-filemanagement.md) 基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现volumeManager模块支持错误码处理,需注意错误码处理的使用。[相关适配指导参考](../v3.2-beta4/changelogs-filemanagement.md)
**关键接口/组件变更** **关键接口/组件变更**
......
# 文件子系统ChangeLog # 文件子系统ChangeLog
## cl.file.1 mediaLibrary相关接口变更 ## cl.file.1 mediaLibrary相关接口变更
multimedia 部件 mediaLibrary所有接口废弃。 multimedia 部件 mediaLibrary所有接口废弃。
**变更影响** **变更影响**
[mediaLibrary](../../../application-dev/reference/apis/js-apis-medialibrary.md)所有接口废弃。系统只对三方应用开放公共目录下文件资源选择和保存功能,由[FilePicker](../../../application-dev/reference/apis/js-apis-file-picker.md)提供能力。 [mediaLibrary](../../../application-dev/reference/apis/js-apis-medialibrary.md)所有接口废弃。系统只对三方应用开放公共目录下文件资源选择和保存功能,由[FilePicker](../../../application-dev/reference/apis/js-apis-file-picker.md)提供能力。
基于此前版本开发的应用,需注意废弃接口的迭代更新。 基于此前版本开发的应用,需注意废弃接口的迭代更新。
**关键接口/组件变更** **关键接口/组件变更**
以下为可以使用FilePicker替代的接口。 以下为可以使用FilePicker替代的接口。
| 模块名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 方法/属性/枚举/常量 | 变更类型 |
| ------------------------- | ------------------------------------------------------------ | -------- | | ------------------------- | ------------------------------------------------------------ | -------- |
| medialibrary | **function** getMediaLibrary(context: Context): MediaLibrary; | 废弃 | | medialibrary | **function** getMediaLibrary(context: Context): MediaLibrary; | 废弃 |
| medialibrary | **function** getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 | | medialibrary | **function** getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 |
| medialibrary | **function** getFileAssets(options: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 | | medialibrary | **function** getFileAssets(options: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 |
| medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback\<FileAsset\>): void | 废弃 |
| medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise\<FileAsset\> | 废弃 |
| medialibrary | **function** getPublicDirectory(type: DirectoryType, callback: AsyncCallback\<string\>): void | 废弃 | | medialibrary | **function** getPublicDirectory(type: DirectoryType, callback: AsyncCallback\<string\>): void | 废弃 |
| medialibrary | **function** getPublicDirectory(type: DirectoryType): Promise\<string\> | 废弃 | | medialibrary | **function** getPublicDirectory(type: DirectoryType): Promise\<string\> | 废弃 |
| medialibrary | **function** release(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** release(callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** release(): Promise\<void\> | 废弃 | | medialibrary | **function** release(): Promise\<void\> | 废弃 |
| medialibrary | **function** FileAsset.open(mode: string, callback: AsyncCallback\<number\>): void | 废弃 | | medialibrary | **function** FileAsset.open(mode: string, callback: AsyncCallback\<number\>): void | 废弃 |
| medialibrary | **function** FileAsset.open(mode: string): Promise\<number\> | 废弃 | | medialibrary | **function** FileAsset.open(mode: string): Promise\<number\> | 废弃 |
| medialibrary | **function** FileAsset.close(fd: number, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.close(fd: number, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** FileAsset.close(fd: number): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.close(fd: number): Promise\<void\> | 废弃 |
| medialibrary | **function** FetchFileResult.getCount(): number | 废弃 | | medialibrary | **function** FetchFileResult.getCount(): number | 废弃 |
| medialibrary | **function** FetchFileResult.isAfterLast(): boolean | 废弃 | | medialibrary | **function** FetchFileResult.isAfterLast(): boolean | 废弃 |
| medialibrary | **function** FetchFileResult.close(): void | 废弃 | | medialibrary | **function** FetchFileResult.close(): void | 废弃 |
| medialibrary | **function** FetchFileResult.getFirstObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getFirstObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 |
| medialibrary | **function** FetchFileResult.getFirstObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getFirstObject(): Promise\<FileAsset\> | 废弃 |
| medialibrary | **function** FetchFileResult.getNextObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getNextObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 |
| medialibrary | **function** FetchFileResult.getNextObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getNextObject(): Promise\<FileAsset\> | 废弃 |
| medialibrary | **function** FetchFileResult.getLastObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getLastObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 |
| medialibrary | **function** FetchFileResult.getLastObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getLastObject(): Promise\<FileAsset\> | 废弃 |
| medialibrary | **function** FetchFileResult.getPositionObject(index: number, callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getPositionObject(index: number, callback: AsyncCallback\<FileAsset\>): void | 废弃 |
| medialibrary | **function** FetchFileResult.getPositionObject(index: number): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getPositionObject(index: number): Promise\<FileAsset\> | 废弃 |
| medialibrary | **function** FetchFileResult.getAllObject(callback: AsyncCallback\<Array\<FileAsset\>\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getAllObject(callback: AsyncCallback\<Array\<FileAsset\>\>): void | 废弃 |
| medialibrary | **function** FetchFileResult.getAllObject(): Promise\<Array\<FileAsset\>\> | 废弃 | | medialibrary | **function** FetchFileResult.getAllObject(): Promise\<Array\<FileAsset\>\> | 废弃 |
| medialibrary | **function** Album.getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 | | medialibrary | **function** Album.getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 |
| medialibrary | **function** Album.getFileAssets(options?: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 | | medialibrary | **function** Album.getFileAssets(options?: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 |
| medialibrary | **enum** FileKey | 废弃 | | medialibrary | **enum** FileKey | 废弃 |
| medialibrary | **enum** DirectoryType | 废弃 | | medialibrary | **enum** DirectoryType | 废弃 |
| medialibrary | **enum** MediaType | 废弃 | | medialibrary | **enum** MediaType | 废弃 |
| medialibrary | **interface** MediaFetchOptions | 废弃 | | medialibrary | **interface** MediaFetchOptions | 废弃 |
| medialibrary | **interface** FileAsset | 废弃 | | medialibrary | **interface** FileAsset | 废弃 |
**适配指导** **适配指导**
**使用mediaLibrary接口编辑公共目录下的文件示例:** **使用mediaLibrary接口编辑公共目录下的文件示例:**
1. 使用getMediaLibrary接口获取媒体库实例。 1. 使用getMediaLibrary接口获取媒体库实例。
2. 创建MediaFetchOptions检索条件使用mediaLibrary实例调用getFileAssets接口获取公共目录下的文件。 2. 创建MediaFetchOptions检索条件使用mediaLibrary实例调用getFileAssets接口获取公共目录下的文件。
3. 使用FetchFileResult相应接口获取目的文件的fileAsset。 3. 使用FetchFileResult相应接口获取目的文件的fileAsset。
4. 使用fileAsset.open接口打开这个文件得到fd。 4. 使用fileAsset.open接口打开这个文件得到fd。
5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。
6. 修改完成后使用fileAsset.close接口关闭这个文件的fd。 6. 修改完成后使用fileAsset.close接口关闭这个文件的fd。
7. 使用fetchFileResult.close接口释放getFileAssets时占用的资源。 7. 使用fetchFileResult.close接口释放getFileAssets时占用的资源。
8. 使用release接口释放媒体库实例。 8. 使用release接口释放媒体库实例。
**示例:** **示例:**
```js ```js
import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import fs from '@ohos.file.fs'; import fs from '@ohos.file.fs';
async function example() { async function example() {
try { try {
let context = getContext(this); let context = getContext(this);
let media = mediaLibrary.getMediaLibrary(context); let media = mediaLibrary.getMediaLibrary(context);
let fileKeyObj = mediaLibrary.FileKey; let fileKeyObj = mediaLibrary.FileKey;
let imageType = mediaLibrary.MediaType.IMAGE; let imageType = mediaLibrary.MediaType.IMAGE;
let getImageOp = { let getImageOp = {
selections: fileKeyObj.MEDIA_TYPE + '= ?', selections: fileKeyObj.MEDIA_TYPE + '= ?',
selectionArgs: [imageType.toString()], selectionArgs: [imageType.toString()],
order: fileKeyObj.DATE_ADDED + ' DESC', order: fileKeyObj.DATE_ADDED + ' DESC',
}; };
const fetchFileResult = await media.getFileAssets(getImageOp); const fetchFileResult = await media.getFileAssets(getImageOp);
const fileAsset = await fetchFileResult.getFirstObject(); const fileAsset = await fetchFileResult.getFirstObject();
console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName); console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName);
let fd = await fileAsset.open('rw'); let fd = await fileAsset.open('rw');
console.info('mediaLibrary fileAsset open fd: ' + fd); console.info('mediaLibrary fileAsset open fd: ' + fd);
let writeLen = fs.writeSync(fd, 'hello, world'); let writeLen = fs.writeSync(fd, 'hello, world');
console.info('write data to file succeed and size is: ' + writeLen); console.info('write data to file succeed and size is: ' + writeLen);
fileAsset.close(fd); fileAsset.close(fd);
fetchFileResult.close(); fetchFileResult.close();
media.release(); media.release();
} catch (err) { } catch (err) {
console.error('mediaLibrary fail, err: ' + err); console.error('mediaLibrary fail, err: ' + err);
} }
} }
``` ```
**使用FilePicker编辑公共目录下的文件示例:** **使用FilePicker编辑公共目录下的文件示例:**
1. 获取DocumentViewPicker文件选择器对象。 1. 获取DocumentViewPicker文件选择器对象。
2. 拉起DocumentViewPicker.select接口选择目的文件。 2. 拉起DocumentViewPicker.select接口选择目的文件。
3. 用户选择完后返回目的文件的uri。 3. 用户选择完后返回目的文件的uri。
4. 待界面从DocumentViewPicker返回后在其他函数中使用[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接口通过uri打开这个文件得到fd。 4. 待界面从DocumentViewPicker返回后在其他函数中使用[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接口通过uri打开这个文件得到fd。
5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。
6. 编辑修改完毕后使用[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接口关闭这个fd。 6. 编辑修改完毕后使用[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接口关闭这个fd。
**示例:** **示例:**
```js ```js
import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs'; import fs from '@ohos.file.fs';
let uri; let uri;
async function example() { async function example() {
try { try {
let DocumentSelectOptions = new picker.DocumentSelectOptions(); let DocumentSelectOptions = new picker.DocumentSelectOptions();
let documentPicker = new picker.DocumentViewPicker(); let documentPicker = new picker.DocumentViewPicker();
documentPicker.select(DocumentSelectOptions).then((DocumentSelectResult) => { documentPicker.select(DocumentSelectOptions).then((DocumentSelectResult) => {
console.info('DocumentViewPicker.select successfully, DocumentSelectResult uri: ' + JSON.stringify(DocumentSelectResult)); console.info('DocumentViewPicker.select successfully, DocumentSelectResult uri: ' + JSON.stringify(DocumentSelectResult));
uri = DocumentSelectResult[0]; uri = DocumentSelectResult[0];
}).catch((err) => { }).catch((err) => {
console.error('DocumentViewPicker.select failed with err: ' + err); console.error('DocumentViewPicker.select failed with err: ' + err);
}); });
} catch (err) { } catch (err) {
console.error('DocumentViewPicker failed with err: ' + err); console.error('DocumentViewPicker failed with err: ' + err);
} }
} }
async function writeFile() { async function writeFile() {
try { try {
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
console.info('DocumentViewPicker file fd: ' + file.fd); console.info('DocumentViewPicker file fd: ' + file.fd);
let writeLen = fs.writeSync(file.fd, 'hello, world'); let writeLen = fs.writeSync(file.fd, 'hello, world');
console.info('write data to file succeed and size is: ' + writeLen); console.info('write data to file succeed and size is: ' + writeLen);
fs.closeSync(file); fs.closeSync(file);
} catch (err) { } catch (err) {
console.error('DocumentViewPicker fail, err: ' + err); console.error('DocumentViewPicker fail, err: ' + err);
} }
} }
``` ```
**使用mediaLibrary接口在公共目录下创建文件示例:** **使用mediaLibrary接口在公共目录下创建文件示例:**
1. 使用getMediaLibrary接口获取媒体库实例。 1. 使用getMediaLibrary接口获取媒体库实例。
2. 使用getPublicDirectory接口获取公共目录路径。 2. 使用getPublicDirectory接口获取公共目录路径。
3. 使用createAsset接口创建文件得到这个文件的fileAsset。 3. 使用createAsset接口创建文件得到这个文件的fileAsset。
4. 使用fileAsset.open接口打开这个文件得到fd。 4. 使用fileAsset.open接口打开这个文件得到fd。
5. 通过fd使用fs.write接口对这个文件进行编辑修改。 5. 通过fd使用fs.write接口对这个文件进行编辑修改。
6. 修改完成后使用fileAsset.close接口关闭这个文件的fd。 6. 修改完成后使用fileAsset.close接口关闭这个文件的fd。
7. 使用release接口释放媒体库实例。 7. 使用release接口释放媒体库实例。
**示例:** **示例:**
```js ```js
import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import fs from '@ohos.file.fs'; import fs from '@ohos.file.fs';
async function example() { async function example() {
try { try {
let context = getContext(this); let context = getContext(this);
let media = mediaLibrary.getMediaLibrary(context); let media = mediaLibrary.getMediaLibrary(context);
let mediaType = mediaLibrary.MediaType.FILE; let mediaType = mediaLibrary.MediaType.FILE;
let DIR_DOWNLOAD = mediaLibrary.DirectoryType.DIR_DOWNLOAD; let DIR_DOWNLOAD = mediaLibrary.DirectoryType.DIR_DOWNLOAD;
const path = await media.getPublicDirectory(DIR_DOWNLOAD); const path = await media.getPublicDirectory(DIR_DOWNLOAD);
const fileAsset = await media.createAsset(mediaType, 'test.txt', path); const fileAsset = await media.createAsset(mediaType, 'test.txt', path);
console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName); console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName);
let fd = await fileAsset.open('rw'); let fd = await fileAsset.open('rw');
console.info('mediaLibrary fileAsset open fd: ' + fd); console.info('mediaLibrary fileAsset open fd: ' + fd);
let writeLen = fs.writeSync(fd, 'hello, world'); let writeLen = fs.writeSync(fd, 'hello, world');
console.info('write data to file succeed and size is: ' + writeLen); console.info('write data to file succeed and size is: ' + writeLen);
fileAsset.close(fd); fileAsset.close(fd);
media.release(); media.release();
} catch (err) { } catch (err) {
console.error('mediaLibrary fail, err: ' + err); console.error('mediaLibrary fail, err: ' + err);
} }
} }
``` ```
**使用FilePicker在公共目录下创建文件示例:** **使用FilePicker在公共目录下创建文件示例:**
1. 获取DocumentViewPicker文件选择器对象。 1. 获取DocumentViewPicker文件选择器对象。
2. 拉起DocumentViewPicker.save接口创建保存一个空的文件。 2. 拉起DocumentViewPicker.save接口创建保存一个空的文件。
3. 用户保存完后返回目的文件的uri。 3. 用户保存完后返回目的文件的uri。
4. 待界面从DocumentViewPicker返回后在其他函数中使用[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接口通过uri打开这个文件得到fd。 4. 待界面从DocumentViewPicker返回后在其他函数中使用[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接口通过uri打开这个文件得到fd。
5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接口对这个文件进行编辑修改。
6. 编辑修改完毕后使用[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接口关闭这个fd。 6. 编辑修改完毕后使用[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接口关闭这个fd。
**示例:** **示例:**
```js ```js
import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import picker from '@ohos.file.picker'; import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs'; import fs from '@ohos.file.fs';
let uri; let uri;
async function example() { async function example() {
try { try {
let DocumentSaveOptions = new picker.DocumentSaveOptions(); let DocumentSaveOptions = new picker.DocumentSaveOptions();
DocumentSaveOptions.newFileNames = ['DocumentViewPicker01.txt']; DocumentSaveOptions.newFileNames = ['DocumentViewPicker01.txt'];
let documentPicker = new picker.DocumentViewPicker(); let documentPicker = new picker.DocumentViewPicker();
documentPicker.save(DocumentSaveOptions).then((DocumentSaveResult) => { documentPicker.save(DocumentSaveOptions).then((DocumentSaveResult) => {
console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ' + JSON.stringify(DocumentSaveResult)); console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ' + JSON.stringify(DocumentSaveResult));
uri = DocumentSaveResult[0]; uri = DocumentSaveResult[0];
}).catch((err) => { }).catch((err) => {
console.error('DocumentViewPicker.save failed with err: ' + err); console.error('DocumentViewPicker.save failed with err: ' + err);
}); });
} catch (err) { } catch (err) {
console.error('DocumentViewPicker failed with err: ' + err); console.error('DocumentViewPicker failed with err: ' + err);
} }
} }
async function writeFile() { async function writeFile() {
try { try {
let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); let file = fs.openSync(uri, fs.OpenMode.READ_WRITE);
console.info('DocumentViewPicker file fd: ' + file.fd); console.info('DocumentViewPicker file fd: ' + file.fd);
let writeLen = fs.writeSync(file.fd, 'hello, world'); let writeLen = fs.writeSync(file.fd, 'hello, world');
console.info('write data to file succeed and size is: ' + writeLen); console.info('write data to file succeed and size is: ' + writeLen);
fs.closeSync(file); fs.closeSync(file);
} catch (err) { } catch (err) {
console.error('DocumentViewPicker fail, err: ' + err); console.error('DocumentViewPicker fail, err: ' + err);
} }
} }
``` ```
**关键接口/组件变更** **关键接口/组件变更**
medialibrary以下废弃接口由于功能管控,不对三方应用开放,无替代接口。 medialibrary以下废弃接口由于功能管控,不对三方应用开放,无替代接口。
| 模块名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 方法/属性/枚举/常量 | 变更类型 |
| ------------------------- | ------------------------------------------------------------ | -------- | | ------------------------- | ------------------------------------------------------------ | -------- |
| medialibrary | **function** getMediaLibrary(): MediaLibrary; | 废弃 | | medialibrary | **function** getMediaLibrary(): MediaLibrary; | 废弃 |
| medialibrary | **function** on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void\>): void | 废弃 | | medialibrary | **function** on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void\>): void | 废弃 |
| medialibrary | **function** off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void\>): void | 废弃 | | medialibrary | **function** off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void\>): void | 废弃 |
| medialibrary | **function** deleteAsset(uri: string): Promise\<void\> | 废弃 | | medialibrary | **function** deleteAsset(uri: string): Promise\<void\> | 废弃 |
| medialibrary | **function** deleteAsset(uri: string, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** deleteAsset(uri: string, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** storeMediaAsset(option: MediaAssetOption, callback: AsyncCallback\<string\>): void | 废弃 | | medialibrary | **function** storeMediaAsset(option: MediaAssetOption, callback: AsyncCallback\<string\>): void | 废弃 |
| medialibrary | **function** storeMediaAsset(option: MediaAssetOption): Promise\<string\> | 废弃 | | medialibrary | **function** storeMediaAsset(option: MediaAssetOption): Promise\<string\> | 废弃 |
| medialibrary | **function** startImagePreview(images: Array\<string\>, index: number, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, index: number, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** startImagePreview(images: Array\<string\>, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** startImagePreview(images: Array\<string\>, index?: number): Promise\<void\> | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, index?: number): Promise\<void\> | 废弃 |
| medialibrary | **function** startMediaSelect(option: MediaSelectOption, callback: AsyncCallback\<Array\<string\>\>): void | 废弃 | | medialibrary | **function** startMediaSelect(option: MediaSelectOption, callback: AsyncCallback\<Array\<string\>\>): void | 废弃 |
| medialibrary | **function** startMediaSelect(option: MediaSelectOption): Promise\<Array\<string\>\> | 废弃 | | medialibrary | **function** startMediaSelect(option: MediaSelectOption): Promise\<Array\<string\>\> | 废弃 |
| medialibrary | **function** getActivePeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 | | medialibrary | **function** getActivePeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 |
| medialibrary | **function** getActivePeers(callback: AsyncCallback\<Array\<PeerInfo\>\>): void; | 废弃 | | medialibrary | **function** getActivePeers(callback: AsyncCallback\<Array\<PeerInfo\>\>): void; | 废弃 |
| medialibrary | **function** getAllPeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 | | medialibrary | **function** getAllPeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 |
| medialibrary | **function** FileAsset.isDirectory(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isDirectory(callback: AsyncCallback\<boolean\>): void | 废弃 |
| medialibrary | **function** FileAsset.isDirectory():Promise\<boolean\> | 废弃 | | medialibrary | **function** FileAsset.isDirectory():Promise\<boolean\> | 废弃 |
| medialibrary | **function** FileAsset.commitModify(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.commitModify(callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** FileAsset.commitModify(): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.commitModify(): Promise\<void\> | 废弃 |
| medialibrary | **function** FileAsset.getThumbnail(callback: AsyncCallback\<image.PixelMap\>): void | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(callback: AsyncCallback\<image.PixelMap\>): void | 废弃 |
| medialibrary | **function** FileAsset.getThumbnail(size: Size, callback: AsyncCallback\<image.PixelMap\>): void | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(size: Size, callback: AsyncCallback\<image.PixelMap\>): void | 废弃 |
| medialibrary | **function** FileAsset.getThumbnail(size?: Size): Promise\<image.PixelMap\> | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(size?: Size): Promise\<image.PixelMap\> | 废弃 |
| medialibrary | **function** FileAsset.favorite(isFavorite: boolean, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.favorite(isFavorite: boolean, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** FileAsset.favorite(isFavorite: boolean): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.favorite(isFavorite: boolean): Promise\<void\> | 废弃 |
| medialibrary | **function** FileAsset.isFavorite(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isFavorite(callback: AsyncCallback\<boolean\>): void | 废弃 |
| medialibrary | **function** FileAsset.isFavorite():Promise\<boolean\> | 废弃 | | medialibrary | **function** FileAsset.isFavorite():Promise\<boolean\> | 废弃 |
| medialibrary | **function** FileAsset.trash(isTrash: boolean, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.trash(isTrash: boolean, callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** FileAsset.trash(isTrash: boolean): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.trash(isTrash: boolean): Promise\<void\> | 废弃 |
| medialibrary | **function** FileAsset.isTrash(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isTrash(callback: AsyncCallback\<boolean\>): void | 废弃 |
| medialibrary | **function** FileAsset.isTrash():Promise\<boolean\> | 废弃 | | medialibrary | **function** FileAsset.isTrash():Promise\<boolean\> | 废弃 |
| medialibrary | **function** getAlbums(options: MediaFetchOptions, callback: AsyncCallback\<Array\<Album\>\>): void | 废弃 | | medialibrary | **function** getAlbums(options: MediaFetchOptions, callback: AsyncCallback\<Array\<Album\>\>): void | 废弃 |
| medialibrary | **function** getAlbums(options: MediaFetchOptions): Promise\<Array\<Album\>\> | 废弃 | | medialibrary | **function** getAlbums(options: MediaFetchOptions): Promise\<Array\<Album\>\> | 废弃 |
| medialibrary | **function** Album.commitModify(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** Album.commitModify(callback: AsyncCallback\<void\>): void | 废弃 |
| medialibrary | **function** Album.commitModify(): Promise\<void\> | 废弃 | | medialibrary | **function** Album.commitModify(): Promise\<void\> | 废弃 |
| medialibrary | **enum** DeviceType | 废弃 | | medialibrary | **enum** DeviceType | 废弃 |
| medialibrary | **interface** PeerInfo | 废弃 | | medialibrary | **interface** PeerInfo | 废弃 |
| medialibrary | **interface** Size | 废弃 | | medialibrary | **interface** Size | 废弃 |
| medialibrary | **interface** MediaAssetOption | 废弃 | | medialibrary | **interface** MediaAssetOption | 废弃 |
| medialibrary | **interface** MediaSelectOption | 废弃 | | medialibrary | **interface** MediaSelectOption | 废弃 |
\ No newline at end of file
# 公共通信子系统NFC JS API变更Changelog # 公共通信子系统NFC JS API变更Changelog
OpenHarmony 3.2.10.2(Mr)版本相较于OpenHarmony 3.2.beta4版本,分布式数据管理子系统的API变更如下
## cl.nfc.1 接口变更 ## cl.nfc.1 接口变更
NFC部分API6到API8部分JS接口不支持抛出错误码,需要删除废弃,然后使用新的API9替换。 NFC部分API6到API8部分JS接口不支持抛出错误码,需要删除废弃,然后使用新的API9替换。
......
# 资源调度子系统ChangeLog # 资源调度子系统ChangeLog
## cl.resourceschedule.backgroundTaskManager ## cl.resourceschedule.backgroundTaskManager
对资源调度子系统backgroundTaskManager仓原有接口进行整改,原有@ohos.backgroundTaskManager.d.ts中的API9接口删除,需要使用@ohos.resourceschedule.backgroundTaskManager.d.ts中的API9新接口。新的API9接口符合错误码规范。 对资源调度子系统backgroundTaskManager仓原有接口进行整改,原有@ohos.backgroundTaskManager.d.ts中的API9接口删除,需要使用@ohos.resourceschedule.backgroundTaskManager.d.ts中的API9新接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.10.5及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.10.5及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更。@ohos.backgroundTaskManager.d.ts文件中的接口移植到@ohos.resourceschedule.backgroundTaskManager.d.ts文件。 以下方法、属性、枚举和常量均从API9变更。@ohos.backgroundTaskManager.d.ts文件中的接口移植到@ohos.resourceschedule.backgroundTaskManager.d.ts文件。
| 类名 | 接口类型 | 接口声明 | 说明 | | 类名 | 接口类型 | 接口声明 | 说明 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| backgroundTaskManager | method | function resetAllEfficiencyResources(): void; | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager | method | function resetAllEfficiencyResources(): void; | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager | method | function applyEfficiencyResources(request: EfficiencyResourcesRequest): bool; | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts,修改为function applyEfficiencyResources(request: EfficiencyResourcesRequest): void; | | backgroundTaskManager | method | function applyEfficiencyResources(request: EfficiencyResourcesRequest): bool; | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts,修改为function applyEfficiencyResources(request: EfficiencyResourcesRequest): void; |
| backgroundTaskManager.ResourceType | enum | export enum ResourceType | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | export enum ResourceType | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | CPU = 1 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | CPU = 1 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | COMMON_EVENT = 1 << 1 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | COMMON_EVENT = 1 << 1 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | TIMER = 1 << 2 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | TIMER = 1 << 2 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | WORK_SCHEDULER = 1 << 3 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | WORK_SCHEDULER = 1 << 3 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | BLUETOOTH = 1 << 4 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | BLUETOOTH = 1 << 4 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | GPS = 1 << 5 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | GPS = 1 << 5 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.ResourceType | enum | AUDIO = 1 << 6 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.ResourceType | enum | AUDIO = 1 << 6 | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | interface | export interface EfficiencyResourcesRequest | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | interface | export interface EfficiencyResourcesRequest | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | reason: string | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | reason: string | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isProcess?: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isProcess?: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isPersist?: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isPersist?: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | timeOut: number | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | timeOut: number | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | isApply: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | isApply: bool | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
| backgroundTaskManager.EfficiencyResourcesRequest | field | resourceTypes: number | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts | | backgroundTaskManager.EfficiencyResourcesRequest | field | resourceTypes: number | 接口API9删除,移植到ohos.resourceschedule.backgroundTaskManager.d.ts |
**适配指导**<br> **适配指导**<br>
导入backgroundTaskManager模块。 导入backgroundTaskManager模块。
``` ```
import bundle form '@ohos.resourceschedule.backgroundTaskManager' import bundle form '@ohos.resourceschedule.backgroundTaskManager'
``` ```
此外还需要适配异常处理,具体参考[backgroundTaskManager接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md) 此外还需要适配异常处理,具体参考[backgroundTaskManager接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-backgroundTaskManager.md)
## c2.resourceschedule.workScheduler ## c2.resourceschedule.workScheduler
对资源调度子系统workScheduler仓原有接口进行整改,原有@ohos.workScheduler.d.ts中的API9接口删除,需要使用@ohos.resourceschedule.workScheduler.d.ts中的API9新接口。新的API9接口符合错误码规范。 对资源调度子系统workScheduler仓原有接口进行整改,原有@ohos.workScheduler.d.ts中的API9接口删除,需要使用@ohos.resourceschedule.workScheduler.d.ts中的API9新接口。新的API9接口符合错误码规范。
**变更影响** **变更影响**
基于OpenHarmony3.2.10.5及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。 基于OpenHarmony3.2.10.5及之后的SDK版本开发的应用,需适配API9的模块和接口,以及的API异常处理返回方式,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
以下方法、属性、枚举和常量均从API9变更。删除@ohos.workScheduler.d.ts文件,相关接口变更至@ohos.resourceschedule.workScheduler.d.ts文件中。 以下方法、属性、枚举和常量均从API9变更。删除@ohos.workScheduler.d.ts文件,相关接口变更至@ohos.resourceschedule.workScheduler.d.ts文件中。
| 类名 | 接口类型 | 接口声明 | 变更类型 | | 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| workScheduler | namespace | declare namespace workScheduler | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | namespace | declare namespace workScheduler | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | interface | export interface WorkInfo | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | interface | export interface WorkInfo | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | parameters?: {[key: string]: any} | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | idleWaitTime?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | idleWaitTime?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isDeepIdle?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isDeepIdle?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | repeatCount?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | repeatCount?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isRepeat?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isRepeat?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | repeatCycleTime?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | repeatCycleTime?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | storageRequest?: StorageRequest | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | storageRequest?: StorageRequest | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | batteryStatus?: BatteryStatus | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | batteryStatus?: BatteryStatus | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | batteryLevel?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | batteryLevel?: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | chargerType?: ChargingType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | chargerType?: ChargingType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isCharging?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isCharging?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | networkType?: NetworkType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | networkType?: NetworkType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | isPersisted?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | isPersisted?: boolean | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | abilityName: string | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | abilityName: string | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | bundleName: string | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | bundleName: string | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.WorkInfo | field | workId: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.WorkInfo | field | workId: number | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function isLastWorkTimeOut(workId: number): Promise; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function isLastWorkTimeOut(workId: number): Promise; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function isLastWorkTimeOut(workId: number, callback: AsyncCallback<void>): boolean; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function isLastWorkTimeOut(workId: number, callback: AsyncCallback<void>): boolean; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function stopAndClearWorks(): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopAndClearWorks(): boolean; | | workScheduler | method | function stopAndClearWorks(): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopAndClearWorks(): boolean; |
| workScheduler | method | function obtainAllWorks(): Promise<Array<WorkInfo>>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function obtainAllWorks(): Promise<Array<WorkInfo>>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function obtainAllWorks(callback: AsyncCallback<void>): Array<WorkInfo>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function obtainAllWorks(callback: AsyncCallback<void>): Array<WorkInfo>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function getWorkStatus(workId: number): Promise<WorkInfo>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function getWorkStatus(workId: number): Promise<WorkInfo>; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function getWorkStatus(workId: number, callback: AsyncCallback<WorkInfo>): void; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler | method | function getWorkStatus(workId: number, callback: AsyncCallback<WorkInfo>): void; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler | method | function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopWork(work: WorkInfo, needCancel?: boolean): void; | | workScheduler | method | function stopWork(work: WorkInfo, needCancel?: boolean): boolean; | 接口API8变更,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function stopWork(work: WorkInfo, needCancel?: boolean): void; |
| workScheduler | method | function startWork(work: WorkInfo): boolean; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function startWork(work: WorkInfo): void; | | workScheduler | method | function startWork(work: WorkInfo): boolean; | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts,修改为function startWork(work: WorkInfo): void; |
| workScheduler.NetworkType | enum | export enum NetworkType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | export enum NetworkType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_ANY = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_ANY = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_MOBILE | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_MOBILE | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_BLUETOOTH | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_BLUETOOTH | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI_P2P | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_WIFI_P2P | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.NetworkType | enum | NETWORK_TYPE_ETHERNET | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.NetworkType | enum | NETWORK_TYPE_ETHERNET | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | export enum ChargingType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | export enum ChargingType | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_ANY = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_ANY = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_AC | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_AC | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_USB | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_USB | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.ChargingType | enum | CHARGING_PLUGGED_WIRELESS | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.ChargingType | enum | CHARGING_PLUGGED_WIRELESS | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | export enum BatteryStatus | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | export enum BatteryStatus | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW_OR_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | BATTERY_STATUS_LOW_OR_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.StorageRequest | enum | export enum StorageRequest | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.StorageRequest | enum | export enum StorageRequest | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW = 0 | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
| workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW_OR_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts | | workScheduler.BatteryStatus | enum | STORAGE_LEVEL_LOW_OR_OKAY | 接口API9删除,移植到ohos.resourceschedule.workScheduler.d.ts |
**适配指导**<br> **适配指导**<br>
导入workScheduler模块。 导入workScheduler模块。
``` ```
import bundle form '@ohos.resourceschedule.workScheduler' import bundle form '@ohos.resourceschedule.workScheduler'
``` ```
此外还需要适配异常处理,具体参考[workScheduler接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-workScheduler.md) 此外还需要适配异常处理,具体参考[workScheduler接口文档](../../../application-dev/reference/apis/js-apis-resourceschedule-workScheduler.md)
# security子系统ChangeLog # security子系统ChangeLog
## cl.security.1 Random的setSeed功能变更,由异步接口改为同步接口 ## cl.security.1 Random的setSeed功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void; setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void;
setSeed(seed : DataBlob) : Promise\<void>; setSeed(seed : DataBlob) : Promise\<void>;
修改后的接口原型: 修改后的接口原型:
setSeed(seed : DataBlob) : void; setSeed(seed : DataBlob) : void;
**适配指导** **适配指导**
查看API参考中setSeed对应的接口适配指南: 查看API参考中setSeed对应的接口适配指南:
[加解密算法库框架-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md) [加解密算法库框架-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md)
## cl.security.2 interface DataArray 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.2 interface DataArray 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface DataArray从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface DataArray从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.3 interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.3 interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface EncodingFormat从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.4 interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.4 interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface EncodingBlob 从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.5 interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.5 interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface CertChainData从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.6 interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.6 interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface X509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.7 function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.7 function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts function createX509Cert从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.8 interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.8 interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface X509CrlEntry从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.9 interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.9 interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface X509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.10 function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.10 function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts function createX509Crl从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.11 interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.11 interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts interface CertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.12 function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts ## cl.security.12 function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts function createCertChainValidator从@ohos.security.cryptoFramework.d.ts 迁移至@ohos.security.cert.d.ts
**适配指导** **适配指导**
重新import并使用对应的.d.ts文件: 重新import并使用对应的.d.ts文件:
import cryptoCert from '@ohos.security.cert'; import cryptoCert from '@ohos.security.cert';
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.13 X509Cert 的getPublicKey功能变更,由异步接口改为同步接口 ## cl.security.13 X509Cert 的getPublicKey功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getPublicKey(callback : AsyncCallback\<PubKey>) : void; getPublicKey(callback : AsyncCallback\<PubKey>) : void;
getPublicKey() : Promise\<PubKey>; getPublicKey() : Promise\<PubKey>;
修改后的接口原型: 修改后的接口原型:
getPublicKey() : cryptoFramework.PubKey; getPublicKey() : cryptoFramework.PubKey;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.14 X509Cert 的checkValidityWithDate功能变更,由异步接口改为同步接口 ## cl.security.14 X509Cert 的checkValidityWithDate功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void; checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void;
checkValidityWithDate(date: string) : Promise\<void>; checkValidityWithDate(date: string) : Promise\<void>;
修改后的接口原型: 修改后的接口原型:
checkValidityWithDate(date: string) : void; checkValidityWithDate(date: string) : void;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.15 X509CrlEntry 的getCertIssuer功能变更,由异步接口改为同步接口 ## cl.security.15 X509CrlEntry 的getCertIssuer功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getCertIssuer(callback : AsyncCallback\<DataBlob>) : void; getCertIssuer(callback : AsyncCallback\<DataBlob>) : void;
getCertIssuer() : Promise\<DataBlob>; getCertIssuer() : Promise\<DataBlob>;
修改后的接口原型: 修改后的接口原型:
getCertIssuer() : DataBlob; getCertIssuer() : DataBlob;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.16 X509CrlEntry 的getRevocationDate功能变更,由异步接口改为同步接口 ## cl.security.16 X509CrlEntry 的getRevocationDate功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getRevocationDate(callback : AsyncCallback\<string>) : void; getRevocationDate(callback : AsyncCallback\<string>) : void;
getRevocationDate() : Promise\<string>; getRevocationDate() : Promise\<string>;
修改后的接口原型: 修改后的接口原型:
getRevocationDate() : string; getRevocationDate() : string;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.17 X509Crl 的isRevoked功能变更,由异步接口改为同步接口 ## cl.security.17 X509Crl 的isRevoked功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void; isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void;
isRevoked(cert : X509Cert) : Promise\<boolean>; isRevoked(cert : X509Cert) : Promise\<boolean>;
修改后的接口原型: 修改后的接口原型:
isRevoked(cert : X509Cert) : boolean; isRevoked(cert : X509Cert) : boolean;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.18 X509Crl 的getRevokedCert功能变更,由异步接口改为同步接口 ## cl.security.18 X509Crl 的getRevokedCert功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) : void; getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) : void;
getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry>; getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry>;
修改后的接口原型: 修改后的接口原型:
getRevokedCert(serialNumber : number) : X509CrlEntry; getRevokedCert(serialNumber : number) : X509CrlEntry;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.19 X509Crl 的getRevokedCertWithCert功能变更,由异步接口改为同步接口 ## cl.security.19 X509Crl 的getRevokedCertWithCert功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>) : void; getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>) : void;
getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry>; getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry>;
修改后的接口原型: 修改后的接口原型:
getRevokedCertWithCert(cert : X509Cert) : X509CrlEntry; getRevokedCertWithCert(cert : X509Cert) : X509CrlEntry;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.20 X509Crl 的getTbsInfo功能变更,由异步接口改为同步接口 ## cl.security.20 X509Crl 的getTbsInfo功能变更,由异步接口改为同步接口
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
getTbsInfo(callback : AsyncCallback\<DataBlob>) : void; getTbsInfo(callback : AsyncCallback\<DataBlob>) : void;
getTbsInfo() : Promise\<DataBlob>; getTbsInfo() : Promise\<DataBlob>;
修改后的接口原型: 修改后的接口原型:
getTbsInfo() : DataBlob; getTbsInfo() : DataBlob;
**适配指导** **适配指导**
查看API参考中对应的接口适配指南: 查看API参考中对应的接口适配指南:
[证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md) [证书-API参考](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-cert.md)
## cl.security.21 HUKS支持No-Hash的签名模式 ## cl.security.21 HUKS支持No-Hash的签名模式
变更之前,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE,HUKS默认使用huks.HuksKeyDigest.HUKS_DIGEST_SHA256进行处理;变更之后,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE时,HUKS默认不进行摘要处理,需要业务先对原始数据进行hash操作,再将hash后的摘要传入huks进行签名/验签处理。 变更之前,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE,HUKS默认使用huks.HuksKeyDigest.HUKS_DIGEST_SHA256进行处理;变更之后,应用传递huks.HuksTag.HUKS_TAG_DIGEST = huks.HuksKeyDigest.HUKS_DIGEST_NONE时,HUKS默认不进行摘要处理,需要业务先对原始数据进行hash操作,再将hash后的摘要传入huks进行签名/验签处理。
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以使得变更前后的签名/验签结果通过。 应用需要进行适配,才可以使得变更前后的签名/验签结果通过。
**关键的接口/组件变更** **关键的接口/组件变更**
发布的JS接口不变, 传入接口的参数集合发生变更。 发布的JS接口不变, 传入接口的参数集合发生变更。
业务使用No-Hash的签名模式,需要先对原始数据进行hash处理,再将hash后的摘要传入huks签名/验签接口。同时huks.HuksTag.HUKS_TAG_DIGEST参数设置为huks.HuksKeyDigest.HUKS_DIGEST_NONE。 业务使用No-Hash的签名模式,需要先对原始数据进行hash处理,再将hash后的摘要传入huks签名/验签接口。同时huks.HuksTag.HUKS_TAG_DIGEST参数设置为huks.HuksKeyDigest.HUKS_DIGEST_NONE。
**适配指导** **适配指导**
以签名为例,示例代码如下: 以签名为例,示例代码如下:
```js ```js
import huks from '@ohos.security.huks'; import huks from '@ohos.security.huks';
let keyAlias = 'rsa_Key'; let keyAlias = 'rsa_Key';
/* sha256之后的摘要值 */ /* sha256之后的摘要值 */
let inDataAfterSha256 = new Uint8Array( let inDataAfterSha256 = new Uint8Array(
0x4B, 0x1E, 0x22, 0x64, 0xA9, 0x89, 0x60, 0x1D, 0xEC, 0x78, 0xC0, 0x5D, 0xBE, 0x46, 0xAD, 0xCF, 0x4B, 0x1E, 0x22, 0x64, 0xA9, 0x89, 0x60, 0x1D, 0xEC, 0x78, 0xC0, 0x5D, 0xBE, 0x46, 0xAD, 0xCF,
0x1C, 0x35, 0x16, 0x11, 0x34, 0x01, 0x4E, 0x9B, 0x7C, 0x00, 0x66, 0x0E, 0xCA, 0x09, 0xC0, 0xF3, 0x1C, 0x35, 0x16, 0x11, 0x34, 0x01, 0x4E, 0x9B, 0x7C, 0x00, 0x66, 0x0E, 0xCA, 0x09, 0xC0, 0xF3,
); );
/* 签名参数 */ /* 签名参数 */
let signProperties = new Array(); let signProperties = new Array();
signProperties[0] = { signProperties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM, tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA, value: huks.HuksKeyAlg.HUKS_ALG_RSA,
} }
signProperties[1] = { signProperties[1] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE, tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN
} }
signProperties[2] = { signProperties[2] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048, value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048,
} }
signProperties[3] = { signProperties[3] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST, tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_NONE, // 设置 digest-none value: huks.HuksKeyDigest.HUKS_DIGEST_NONE, // 设置 digest-none
} }
let signOptions = { let signOptions = {
properties: signProperties, properties: signProperties,
inData: inDataAfterSha256 // 设置HASH后的值 inData: inDataAfterSha256 // 设置HASH后的值
} }
huks.initSession(keyAlias, signOptions); huks.initSession(keyAlias, signOptions);
``` ```
更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md) 更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)
## cl.security.22 HUKS支持在密钥使用时指定密钥运算参数 ## cl.security.22 HUKS支持在密钥使用时指定密钥运算参数
变更之前,业务在生成密钥的时候,必须指定密钥运算的全部参数;变更之后,在生成密钥时,只需要包含必选参数即可,在密钥使用阶段再传入其他参数。业务使用会更加灵活。 变更之前,业务在生成密钥的时候,必须指定密钥运算的全部参数;变更之后,在生成密钥时,只需要包含必选参数即可,在密钥使用阶段再传入其他参数。业务使用会更加灵活。
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
允许应用在生成密钥阶段传入的参数中包含必选参数即可,在密钥使用阶段再传入其他可选参数。 允许应用在生成密钥阶段传入的参数中包含必选参数即可,在密钥使用阶段再传入其他可选参数。
**关键的接口/组件变更** **关键的接口/组件变更**
发布的JS接口不变, 传入接口的参数集合发生变更,将参数分为必选参数和可选参数,具体可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md),涉及的接口有: 发布的JS接口不变, 传入接口的参数集合发生变更,将参数分为必选参数和可选参数,具体可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md),涉及的接口有:
huks.generateKeyItem huks.generateKeyItem
huks.importKeyItem huks.importKeyItem
huks.importWrappedKeyItem huks.importWrappedKeyItem
huks.initSession huks.initSession
huks.updateSession huks.updateSession
huks.finishSession huks.finishSession
**适配指导** **适配指导**
以生成密钥为例,示例代码如下: 以生成密钥为例,示例代码如下:
```js ```js
let keyAlias = 'keyAlias'; let keyAlias = 'keyAlias';
let properties = new Array(); let properties = new Array();
//必选参数 //必选参数
properties[0] = { properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM, tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA value: huks.HuksKeyAlg.HUKS_ALG_RSA
}; };
//必选参数 //必选参数
properties[1] = { properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE, tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048 value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048
}; };
//必选参数 //必选参数
properties[2] = { properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE, tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
}; };
//可选参数,如果在生成密钥阶段没有传入,则在使用密钥阶段必须传入。 //可选参数,如果在生成密钥阶段没有传入,则在使用密钥阶段必须传入。
properties[3] = { properties[3] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST, tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256 value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
}; };
let options = { let options = {
properties: properties properties: properties
}; };
try { try {
huks.generateKeyItem(keyAlias, options, function (error, data) { huks.generateKeyItem(keyAlias, options, function (error, data) {
if (error) { if (error) {
console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`); console.error(`callback: generateKeyItem failed, code: ${error.code}, msg: ${error.message}`);
} else { } else {
console.info(`callback: generateKeyItem key success`); console.info(`callback: generateKeyItem key success`);
} }
}); });
} catch (error) { } catch (error) {
console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`); console.error(`callback: generateKeyItem input arg invalid, code: ${error.code}, msg: ${error.message}`);
} }
``` ```
更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md) 更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)
# 电话子系统ChangeLog # 电话子系统ChangeLog
## cl.telephony.1 radio模块接口变更 ## cl.telephony.1 radio模块接口变更
### 电话子系统radio模块 `isNrSupported` 接口存在变更: ### 电话子系统radio模块 `isNrSupported` 接口存在变更:
NR是专有名词,需要全部大写。 NR是专有名词,需要全部大写。
开发者需要根据以下说明对应用进行适配。 开发者需要根据以下说明对应用进行适配。
**变更影响** **变更影响**
基于此前版本开发的应用,需适配变更的js接口,变更前的接口已经不能正常使用了,否则会影响原有功能。 基于此前版本开发的应用,需适配变更的js接口,变更前的接口已经不能正常使用了,否则会影响原有功能。
**关键的接口/组件变更** **关键的接口/组件变更**
- 涉及接口 - 涉及接口
isNrSupported(): boolean; isNrSupported(): boolean;
isNrSupported(slotId: number): boolean; isNrSupported(slotId: number): boolean;
- 变更前: - 变更前:
```js ```js
function isNrSupported(): boolean; function isNrSupported(): boolean;
function isNrSupported(slotId: number): boolean; function isNrSupported(slotId: number): boolean;
``` ```
- 变更后: - 变更后:
```js ```js
function isNRSupported(): boolean; function isNRSupported(): boolean;
function isNRSupported(slotId: number): boolean; function isNRSupported(slotId: number): boolean;
``` ```
**适配指导** **适配指导**
使用变更后的接口,示例代码如下: 使用变更后的接口,示例代码如下:
```js ```js
let result = radio.isNrSupported(); let result = radio.isNrSupported();
console.log("Result: "+ result); console.log("Result: "+ result);
``` ```
```js ```js
let slotId = 0; let slotId = 0;
let result = radio.isNRSupported(slotId); let result = radio.isNRSupported(slotId);
console.log("Result: "+ result); console.log("Result: "+ result);
``` ```
# 公共基础类库子系统JS API变更Changelog # 公共基础类库子系统JS API变更Changelog
OpenHarmony 3.2.10.1(Mr)版本相较于OpenHarmony 3.2.beta4版本,url子系统的API变更如下
## cl.commonlibrary.1.URLParams类接口变更 ## cl.commonlibrary.1.URLParams类接口变更
公共基础类库子系统url模块URLParams类构造函数存在变更: 公共基础类库子系统url模块URLParams类构造函数存在变更:
......
# 元能力子系统ChangeLog # 元能力子系统ChangeLog
## cl.ability.1 SystemAPI使用规则变更 ## cl.ability.1 SystemAPI使用规则变更
目前元能力提供的system-api在调用时未做系统应用校验,三方应用使用Full版本的SDK就可以使用这些system-api,存在安全隐患,因此在OpenHarmony 4.0.2.1版本开始增加应用身份校验。 目前元能力提供的system-api在调用时未做系统应用校验,三方应用使用Full版本的SDK就可以使用这些system-api,存在安全隐患,因此在OpenHarmony 4.0.2.1版本开始增加应用身份校验。
**变更影响** **变更影响**
只有系统应用允许使用system-api,三方应用使用system-api将返回202错误,返回202错误的方式有两种:1.抛异常;2.异步回调 只有系统应用允许使用system-api,三方应用使用system-api将返回202错误,返回202错误的方式有两种:1.抛异常;2.异步回调
**关键接口/组件变更** **关键接口/组件变更**
system-api列表如下所示。 system-api列表如下所示。
| 模块名 | 方法 | 返回错误码方式 | | 模块名 | 方法 | 返回错误码方式 |
| ------------------------------------------ | --------------------------------------------------------------------------------- | -------------- | | ------------------------------------------ | --------------------------------------------------------------------------------- | -------------- |
| @ohos.app.ability.abilityManager.d.ts | updateConfiguration(config: Configuration, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | updateConfiguration(config: Configuration, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | updateConfiguration(config: Configuration): Promise<void> | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | updateConfiguration(config: Configuration): Promise<void> | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | getAbilityRunningInfos(): Promise<Array<AbilityRunningInfo>> | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | getAbilityRunningInfos(): Promise<Array<AbilityRunningInfo>> | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | getAbilityRunningInfos(callback: AsyncCallback<Array<AbilityRunningInfo>>): void | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | getAbilityRunningInfos(callback: AsyncCallback<Array<AbilityRunningInfo>>): void | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | getExtensionRunningInfos(upperLimit: number): Promise<Array<ExtensionRunningInfo>> | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | getExtensionRunningInfos(upperLimit: number): Promise<Array<ExtensionRunningInfo>> | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | getExtensionRunningInfos(upperLimit: number, callback: AsyncCallback<Array<ExtensionRunningInfo>>): void | 异步回调 | | @ohos.app.ability.abilityManager.d.ts | getExtensionRunningInfos(upperLimit: number, callback: AsyncCallback<Array<ExtensionRunningInfo>>): void | 异步回调 |
| @ohos.app.ability.abilityManager.d.ts | getTopAbility(): Promise<ElementName> | 抛异常 | | @ohos.app.ability.abilityManager.d.ts | getTopAbility(): Promise<ElementName> | 抛异常 |
| @ohos.app.ability.abilityManager.d.ts | getTopAbility(callback: AsyncCallback<ElementName>): void | 抛异常 | | @ohos.app.ability.abilityManager.d.ts | getTopAbility(callback: AsyncCallback<ElementName>): void | 抛异常 |
| @ohos.app.ability.appManager.d.ts | on(type: "applicationState", observer: ApplicationStateObserver): number | 异步回调 | | @ohos.app.ability.appManager.d.ts | on(type: "applicationState", observer: ApplicationStateObserver): number | 异步回调 |
| @ohos.app.ability.appManager.d.ts | on(type: "applicationState", observer: ApplicationStateObserver, bundleNameList: Array<string>): number | 异步回调 | | @ohos.app.ability.appManager.d.ts | on(type: "applicationState", observer: ApplicationStateObserver, bundleNameList: Array<string>): number | 异步回调 |
| @ohos.app.ability.appManager.d.ts | off(type: "applicationState", observerId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.appManager.d.ts | off(type: "applicationState", observerId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.appManager.d.ts | off(type: "applicationState", observerId: number): Promise<void> | 异步回调 | | @ohos.app.ability.appManager.d.ts | off(type: "applicationState", observerId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.appManager.d.ts | getForegroundApplications(callback: AsyncCallback<Array<AppStateData>>): void | 异步回调 | | @ohos.app.ability.appManager.d.ts | getForegroundApplications(callback: AsyncCallback<Array<AppStateData>>): void | 异步回调 |
| @ohos.app.ability.appManager.d.ts | getForegroundApplications(): Promise<Array<AppStateData>> | 异步回调 | | @ohos.app.ability.appManager.d.ts | getForegroundApplications(): Promise<Array<AppStateData>> | 异步回调 |
| @ohos.app.ability.appManager.d.ts | killProcessWithAccount(bundleName: string, accountId: number): Promise<void> | 异步回调 | | @ohos.app.ability.appManager.d.ts | killProcessWithAccount(bundleName: string, accountId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.appManager.d.ts | killProcessWithAccount(bundleName: string, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.appManager.d.ts | killProcessWithAccount(bundleName: string, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.appManager.d.ts | killProcessesByBundleName(bundleName: string): Promise<void> | 异步回调 | | @ohos.app.ability.appManager.d.ts | killProcessesByBundleName(bundleName: string): Promise<void> | 异步回调 |
| @ohos.app.ability.appManager.d.ts | killProcessesByBundleName(bundleName: string, callback: AsyncCallback<void>) | 异步回调 | | @ohos.app.ability.appManager.d.ts | killProcessesByBundleName(bundleName: string, callback: AsyncCallback<void>) | 异步回调 |
| @ohos.app.ability.appManager.d.ts | clearUpApplicationData(bundleName: string): Promise<void> | 异步回调 | | @ohos.app.ability.appManager.d.ts | clearUpApplicationData(bundleName: string): Promise<void> | 异步回调 |
| @ohos.app.ability.appManager.d.ts | clearUpApplicationData(bundleName: string, callback: AsyncCallback<void>) | 异步回调 | | @ohos.app.ability.appManager.d.ts | clearUpApplicationData(bundleName: string, callback: AsyncCallback<void>) | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | on(type: "mission", listener: MissionListener): number | 异步回调 | | @ohos.app.ability.missionManager.d.ts | on(type: "mission", listener: MissionListener): number | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | off(type: "mission", listenerId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | off(type: "mission", listenerId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | off(type: "mission", listenerId: number): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | off(type: "mission", listenerId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionInfo(deviceId: string, missionId: number, callback: AsyncCallback<MissionInfo>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionInfo(deviceId: string, missionId: number, callback: AsyncCallback<MissionInfo>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionInfo(deviceId: string, missionId: number): Promise<MissionInfo> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionInfo(deviceId: string, missionId: number): Promise<MissionInfo> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionInfos(deviceId: string, numMax: number, callback: AsyncCallback<Array<MissionInfo>>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionInfos(deviceId: string, numMax: number, callback: AsyncCallback<Array<MissionInfo>>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionInfos(deviceId: string, numMax: number): Promise<Array<MissionInfo>> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionInfos(deviceId: string, numMax: number): Promise<Array<MissionInfo>> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionSnapShot(deviceId: string, missionId: number, callback: AsyncCallback<MissionSnapshot>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionSnapShot(deviceId: string, missionId: number, callback: AsyncCallback<MissionSnapshot>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getMissionSnapShot(deviceId: string, missionId: number): Promise<MissionSnapshot> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getMissionSnapShot(deviceId: string, missionId: number): Promise<MissionSnapshot> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getLowResolutionMissionSnapShot(deviceId: string, missionId: number, callback: AsyncCallback<MissionSnapshot>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getLowResolutionMissionSnapShot(deviceId: string, missionId: number, callback: AsyncCallback<MissionSnapshot>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | getLowResolutionMissionSnapShot(deviceId: string, missionId: number): Promise<MissionSnapshot> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | getLowResolutionMissionSnapShot(deviceId: string, missionId: number): Promise<MissionSnapshot> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | lockMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | lockMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | lockMission(missionId: number): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | lockMission(missionId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | unlockMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | unlockMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | unlockMission(missionId: number): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | unlockMission(missionId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | clearMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | clearMission(missionId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | clearMission(missionId: number): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | clearMission(missionId: number): Promise<void> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | clearAllMissions(callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | clearAllMissions(callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | clearAllMissions(): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | clearAllMissions(): Promise<void> | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, options?: StartOptions): Promise<void> | 异步回调 | | @ohos.app.ability.missionManager.d.ts | moveMissionToFront(missionId: number, options?: StartOptions): Promise<void> | 异步回调 |
| @ohos.app.ability.quickFixManager.d.ts | applyQuickFix(hapModuleQuickFixFiles: Array<string>, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.ability.quickFixManager.d.ts | applyQuickFix(hapModuleQuickFixFiles: Array<string>, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.ability.quickFixManager.d.ts | applyQuickFix(hapModuleQuickFixFiles: Array<string>): Promise<void> | 异步回调 | | @ohos.app.ability.quickFixManager.d.ts | applyQuickFix(hapModuleQuickFixFiles: Array<string>): Promise<void> | 异步回调 |
| @ohos.app.ability.quickFixManager.d.ts | getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback<ApplicationQuickFixInfo>): void | 异步回调 | | @ohos.app.ability.quickFixManager.d.ts | getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback<ApplicationQuickFixInfo>): void | 异步回调 |
| @ohos.app.ability.quickFixManager.d.ts | getApplicationQuickFixInfo(bundleName: string): Promise<ApplicationQuickFixInfo> | 异步回调 | | @ohos.app.ability.quickFixManager.d.ts | getApplicationQuickFixInfo(bundleName: string): Promise<ApplicationQuickFixInfo> | 异步回调 |
| @ohos.app.ability.wantAgent.d.ts | getWant(agent: WantAgent, callback: AsyncCallback<Want>): void | 异步回调 | | @ohos.app.ability.wantAgent.d.ts | getWant(agent: WantAgent, callback: AsyncCallback<Want>): void | 异步回调 |
| @ohos.app.ability.wantAgent.d.ts | getWant(agent: WantAgent): Promise<Want> | 异步回调 | | @ohos.app.ability.wantAgent.d.ts | getWant(agent: WantAgent): Promise<Want> | 异步回调 |
| @ohos.app.form.formHost.d.ts | deleteForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | deleteForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | deleteForm(formId: string): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | deleteForm(formId: string): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | releaseForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | releaseForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | releaseForm(formId: string, isReleaseCache: boolean, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | releaseForm(formId: string, isReleaseCache: boolean, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | releaseForm(formId: string, isReleaseCache?: boolean): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | releaseForm(formId: string, isReleaseCache?: boolean): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | requestForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | requestForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | requestForm(formId: string): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | requestForm(formId: string): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | castToNormalForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | castToNormalForm(formId: string, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | castToNormalForm(formId: string): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | castToNormalForm(formId: string): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyVisibleForms(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyVisibleForms(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyVisibleForms(formIds: Array<string>): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyVisibleForms(formIds: Array<string>): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyInvisibleForms(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyInvisibleForms(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyInvisibleForms(formIds: Array<string>): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyInvisibleForms(formIds: Array<string>): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | enableFormsUpdate(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | enableFormsUpdate(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | enableFormsUpdate(formIds: Array<string>): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | enableFormsUpdate(formIds: Array<string>): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | disableFormsUpdate(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | disableFormsUpdate(formIds: Array<string>, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | disableFormsUpdate(formIds: Array<string>): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | disableFormsUpdate(formIds: Array<string>): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | isSystemReady(callback: AsyncCallback<void>): void | 抛异常 | | @ohos.app.form.formHost.d.ts | isSystemReady(callback: AsyncCallback<void>): void | 抛异常 |
| @ohos.app.form.formHost.d.ts | isSystemReady(): Promise<void> | 抛异常 | | @ohos.app.form.formHost.d.ts | isSystemReady(): Promise<void> | 抛异常 |
| @ohos.app.form.formHost.d.ts | getAllFormsInfo(callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | getAllFormsInfo(callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | getAllFormsInfo(): Promise<Array<formInfo.FormInfo>> | 异步回调 | | @ohos.app.form.formHost.d.ts | getAllFormsInfo(): Promise<Array<formInfo.FormInfo>> | 异步回调 |
| @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, moduleName: string, callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, moduleName: string, callback: AsyncCallback<Array<formInfo.FormInfo>>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, moduleName?: string): Promise<Array<formInfo.FormInfo>> | 异步回调 | | @ohos.app.form.formHost.d.ts | getFormsInfo(bundleName: string, moduleName?: string): Promise<Array<formInfo.FormInfo>> | 异步回调 |
| @ohos.app.form.formHost.d.ts | deleteInvalidForms(formIds: Array<string>, callback: AsyncCallback<number>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | deleteInvalidForms(formIds: Array<string>, callback: AsyncCallback<number>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | deleteInvalidForms(formIds: Array<string>): Promise<number> | 异步回调 | | @ohos.app.form.formHost.d.ts | deleteInvalidForms(formIds: Array<string>): Promise<number> | 异步回调 |
| @ohos.app.form.formHost.d.ts | acquireFormState(want: Want, callback: AsyncCallback<formInfo.FormStateInfo>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | acquireFormState(want: Want, callback: AsyncCallback<formInfo.FormStateInfo>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | acquireFormState(want: Want): Promise<formInfo.FormStateInfo> | 异步回调 | | @ohos.app.form.formHost.d.ts | acquireFormState(want: Want): Promise<formInfo.FormStateInfo> | 异步回调 |
| @ohos.app.form.formHost.d.ts | on(type: "formUninstall", callback: Callback<string>): void | 抛异常 | | @ohos.app.form.formHost.d.ts | on(type: "formUninstall", callback: Callback<string>): void | 抛异常 |
| @ohos.app.form.formHost.d.ts | off(type: "formUninstall", callback?: Callback<string>): void | 抛异常 | | @ohos.app.form.formHost.d.ts | off(type: "formUninstall", callback?: Callback<string>): void | 抛异常 |
| @ohos.app.form.formHost.d.ts | notifyFormsVisible(formIds: Array<string>, isVisible: boolean, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsVisible(formIds: Array<string>, isVisible: boolean, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyFormsVisible(formIds: Array<string>, isVisible: boolean): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsVisible(formIds: Array<string>, isVisible: boolean): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyFormsEnableUpdate(formIds: Array<string>, isEnableUpdate: boolean, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsEnableUpdate(formIds: Array<string>, isEnableUpdate: boolean, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyFormsEnableUpdate(formIds: Array<string>, isEnableUpdate: boolean): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsEnableUpdate(formIds: Array<string>, isEnableUpdate: boolean): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | shareForm(formId: string, deviceId: string, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | shareForm(formId: string, deviceId: string, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | shareForm(formId: string, deviceId: string): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | shareForm(formId: string, deviceId: string): Promise<void> | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyFormsPrivacyProtected(formIds: Array<string>, isProtected: boolean, callback: AsyncCallback<void>): void | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsPrivacyProtected(formIds: Array<string>, isProtected: boolean, callback: AsyncCallback<void>): void | 异步回调 |
| @ohos.app.form.formHost.d.ts | notifyFormsPrivacyProtected(formIds: Array<string>, isProtected: boolean): Promise<void> | 异步回调 | | @ohos.app.form.formHost.d.ts | notifyFormsPrivacyProtected(formIds: Array<string>, isProtected: boolean): Promise<void> | 异步回调 |
| @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback<string>): void | 异步回调 | | @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, formBindingData: formBindingData.FormBindingData, callback: AsyncCallback<string>): void | 异步回调 |
| @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, callback: AsyncCallback<string>): void | 异步回调 | | @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, callback: AsyncCallback<string>): void | 异步回调 |
| @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, formBindingData?: formBindingData.FormBindingData): Promise<string> | 异步回调 | | @ohos.app.form.formProvider.d.ts | requestPublishForm(want: Want, formBindingData?: formBindingData.FormBindingData): Promise<string> | 异步回调 |
| @ohos.app.form.formProvider.d.ts | isRequestPublishFormSupported(callback: AsyncCallback<boolean>): void | 抛异常 | | @ohos.app.form.formProvider.d.ts | isRequestPublishFormSupported(callback: AsyncCallback<boolean>): void | 抛异常 |
| @ohos.app.form.formProvider.d.ts | isRequestPublishFormSupported(): Promise<boolean> | 抛异常 | | @ohos.app.form.formProvider.d.ts | isRequestPublishFormSupported(): Promise<boolean> | 抛异常 |
| UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<void> | 异步回调 |
| UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback<AbilityResult>): void | 抛异常 | | UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback<AbilityResult>): void | 抛异常 |
| UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<AbilityResult>): void | 抛异常 | | UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<AbilityResult>): void | 抛异常 |
| UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<AbilityResult> | 抛异常 | | UIAbilityContext.d.ts | startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<AbilityResult> | 抛异常 |
| UIAbilityContext.d.ts | startServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | startServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | startServiceExtensionAbility(want: Want): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | startServiceExtensionAbility(want: Want): Promise<void> | 异步回调 |
| UIAbilityContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 |
| UIAbilityContext.d.ts | stopServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | stopServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | stopServiceExtensionAbility(want: Want): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | stopServiceExtensionAbility(want: Want): Promise<void> | 异步回调 |
| UIAbilityContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 |
| UIAbilityContext.d.ts | connectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number | 异步回调 | | UIAbilityContext.d.ts | connectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number | 异步回调 |
| UIAbilityContext.d.ts | setMissionIcon(icon: image.PixelMap, callback: AsyncCallback<void>): void | 异步回调 | | UIAbilityContext.d.ts | setMissionIcon(icon: image.PixelMap, callback: AsyncCallback<void>): void | 异步回调 |
| UIAbilityContext.d.ts | setMissionIcon(icon: image.PixelMap): Promise<void> | 异步回调 | | UIAbilityContext.d.ts | setMissionIcon(icon: image.PixelMap): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<void> | 异步回调 | | ServiceExtensionContext.d.ts | startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | startServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | startServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | startServiceExtensionAbility(want: Want): Promise<void> | 异步回调 | | ServiceExtensionContext.d.ts | startServiceExtensionAbility(want: Want): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 | | ServiceExtensionContext.d.ts | startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | stopServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | stopServiceExtensionAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | stopServiceExtensionAbility(want: Want): Promise<void> | 异步回调 | | ServiceExtensionContext.d.ts | stopServiceExtensionAbility(want: Want): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 | | ServiceExtensionContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback<void>): void | 异步回调 |
| ServiceExtensionContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 | | ServiceExtensionContext.d.ts | stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise<void> | 异步回调 |
| ServiceExtensionContext.d.ts | connectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number | 异步回调 | | ServiceExtensionContext.d.ts | connectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number | 异步回调 |
| Context.d.ts | createBundleContext(bundleName: string): Context | 抛异常 | | Context.d.ts | createBundleContext(bundleName: string): Context | 抛异常 |
| Context.d.ts | createModuleContext(bundleName: string, moduleName: string): Context | 抛异常 | | Context.d.ts | createModuleContext(bundleName: string, moduleName: string): Context | 抛异常 |
| FormExtensionContext.d.ts | startAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 | | FormExtensionContext.d.ts | startAbility(want: Want, callback: AsyncCallback<void>): void | 异步回调 |
| FormExtensionContext.d.ts | startAbility(want: Want): Promise<void> | 异步回调 | | FormExtensionContext.d.ts | startAbility(want: Want): Promise<void> | 异步回调 |
## cl.ability.2 appRecovery接口中RestartFlag属性名称变更,删除了未支持的属性
appRecovery接口中RestartFlag枚举命名从特定故障发生后**不重启**改成了特定故障发生后**重启**
删除了CPP_CRASH_NO_RESTART。
**变更影响**
4.0.2.3版本之前使用CPP_CRASH_NO_RESTART/JS_CRASH_NO_RESTART/APP_FREEZE_NO_RESTART类型开发的应用,在4.0.2.3版本之后行为会发生变化。
**关键接口/组件变更**
**RestartFlag** <sup>9+</sup>
变更前:
| 名称 | 值 | 说明 |
| ----------------------------- | ---- | ------------------------------------------------------------ |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | 0x0001 | 发生CPP_CRASH时**不重启**应用。 |
| JS_CRASH_NO_RESTART | 0x0002 | 发生JS_CRASH时**不重启**应用。 |
| APP_FREEZE_NO_RESTART | 0x0004 | 发生APP_FREEZE时**不重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
变更后:
| 名称 | 值 | 说明 |
| ---------- | ---- | ---------- |
| ALWAYS_RESTART | 0 | 总是重启应用。 |
| CPP_CRASH_NO_RESTART | NA | **删除**,不支持该场景的重启。 |
| RESTART_WHEN_JS_CRASH | 0x0001 | 发生JS_CRASH时**重启**应用。 |
| RESTART_WHEN_APP_FREEZE | 0x0002 | 发生APP_FREEZE时**重启**应用。 |
| NO_RESTART | 0xFFFF | 总是不重启应用。 |
**适配指导**
按新的语义进行适配。
## cl.ability.3 appRecovery新增saveAppState接口
新增接口saveAppState(context?: UIAbilityContext): boolean;
**变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可以使用saveAppState接口传入指定Ability Context,实现主动保存指定的Ability状态。
**关键接口/组件变更**
@ohos.app.ability.appRecovery.d.ts中新增saveAppState接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| @ohos.app.ability.appRecovery.d.ts | appRecovery | saveAppState(context?: UIAbilityContext): boolean; | 新增 |
**适配指导**
通过调用saveAppState传入UIAbility Context参数主动保存此指定的Ability的状态。
```ts
import appRecovery from '@ohos.app.ability.appRecovery';
onBackground() {
hilog.info(0x0000, '[demo]', '%{public}s', 'EntryAbility onBackground');
appRecovery.saveAppState(this.context)
}
```
## cl.ability.appRecovery新增setRestartWant接口
新增接口setRestartWant(want: Want): void;
**变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可以使用setRestartWant接口设置下次由恢复主动拉起场景下的Ability。
**关键接口/组件变更**
@ohos.app.ability.appRecovery.d.ts中新增setRestartWant接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| @ohos.app.ability.appRecovery.d.ts | appRecovery | setRestartWant(want: Want): void; | 新增 |
**适配指导**
通过调用setRestartWant设置下次恢复到的指定Ability。
```ts
import appRecovery from '@ohos.app.ability.appRecovery';
Button("启动到恢复Ability")
.fontSize(40)
.fontWeight(FontWeight.Bold)
.onClick(()=> {
// set restart want
let want = {
bundleName: "ohos.samples.recovery",
abilityName: "RecoveryAbility"
};
appRecovery.setRestartWant(want);
})
```
\ No newline at end of file
# 帐号子系统ChangeLog # 帐号子系统ChangeLog
OpenHarmony4.0.3.2版本相较于OpenHarmony之前的版本,帐号模块的API变更如下。 ## cl.account_os_account.1 分布式帐号昵称和头像规格扩大
## cl.account_os_account.1 应用帐号isAccountRemovable命名变更 已有分布式帐号的昵称长度和头像大小的规格过小,无法满足其他昵称较长、头像较大的使用场景。
因此,将分布式帐号昵称长度和头像大小的规格扩大。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可按照最新规格使用该接口,原有逻辑不受影响。
**关键接口/组件变更**
变更前:
- 昵称长度限制为20个字符,头像大小限制为3M
变更后:
- 昵称长度限制为1024个字符,头像大小限制为10M
## cl.account_os_account.2 应用帐号isAccountRemovable命名变更
类Authenticator中的成员函数isAccountRemovable由于命名不统一问题,名称变更为checkAccountRemovable。 类Authenticator中的成员函数isAccountRemovable由于命名不统一问题,名称变更为checkAccountRemovable。
...@@ -54,7 +71,7 @@ OpenHarmony4.0.3.2版本相较于OpenHarmony之前的版本,帐号模块的API ...@@ -54,7 +71,7 @@ OpenHarmony4.0.3.2版本相较于OpenHarmony之前的版本,帐号模块的API
} }
``` ```
## cl.account_os_account.2 系统帐号checkConstraintEnabled命名变更 ## cl.account_os_account.3 系统帐号checkConstraintEnabled命名变更
checkConstraintEnabled由于命名不统一问题,名称变更为checkOsAccountConstraintEnabled。 checkConstraintEnabled由于命名不统一问题,名称变更为checkOsAccountConstraintEnabled。
...@@ -87,7 +104,7 @@ interface AccountManager { ...@@ -87,7 +104,7 @@ interface AccountManager {
checkOsAccountConstraintEnabled(localId: number, constraint: string): Promise<boolean>; checkOsAccountConstraintEnabled(localId: number, constraint: string): Promise<boolean>;
``` ```
## cl.account_os_account.3 系统帐号checkOsAccountConstraintEnabled权限场景变更 ## cl.account_os_account.4 系统帐号checkOsAccountConstraintEnabled权限场景变更
checkOsAccountConstraintEnabled接口的权限管控新增可选权限:ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS。 checkOsAccountConstraintEnabled接口的权限管控新增可选权限:ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS。
...@@ -127,7 +144,7 @@ interface AccountManager { ...@@ -127,7 +144,7 @@ interface AccountManager {
checkOsAccountConstraintEnabled(localId: number, constraint: string): Promise<boolean>; checkOsAccountConstraintEnabled(localId: number, constraint: string): Promise<boolean>;
``` ```
## cl.account_os_account.4 系统帐号queryOsAccountLocalIdFromProcessd命名变更 ## cl.account_os_account.5 系统帐号queryOsAccountLocalIdFromProcessd命名变更
queryOsAccountLocalIdFromProcess由于命名不统一问题,名称变更为getOsAccountLocalId。 queryOsAccountLocalIdFromProcess由于命名不统一问题,名称变更为getOsAccountLocalId。
...@@ -159,7 +176,7 @@ interface AccountManager { ...@@ -159,7 +176,7 @@ interface AccountManager {
getOsAccountLocalId(): Promise<number>; getOsAccountLocalId(): Promise<number>;
``` ```
## cl.account_os_account.5 系统帐号queryOsAccountLocalIdFromUid命名变更 ## cl.account_os_account.6 系统帐号queryOsAccountLocalIdFromUid命名变更
queryOsAccountLocalIdFromUid由于命名不统一问题,名称变更为getOsAccountLocalIdForUid。 queryOsAccountLocalIdFromUid由于命名不统一问题,名称变更为getOsAccountLocalIdForUid。
...@@ -192,7 +209,7 @@ interface AccountManager { ...@@ -192,7 +209,7 @@ interface AccountManager {
getOsAccountLocalIdForUid(uid: number): Promise<number>; getOsAccountLocalIdForUid(uid: number): Promise<number>;
``` ```
## cl.account_os_account.6 系统帐号queryOsAccountLocalIdFromDomain命名变更 ## cl.account_os_account.7 系统帐号queryOsAccountLocalIdFromDomain命名变更
queryOsAccountLocalIdFromDomain由于命名不统一问题,名称变更为getOsAccountLocalIdForDomain。 queryOsAccountLocalIdFromDomain由于命名不统一问题,名称变更为getOsAccountLocalIdForDomain。
...@@ -225,7 +242,7 @@ interface AccountManager { ...@@ -225,7 +242,7 @@ interface AccountManager {
getOsAccountLocalIdForDomain(domainInfo: DomainAccountInfo): Promise<number>; getOsAccountLocalIdForDomain(domainInfo: DomainAccountInfo): Promise<number>;
``` ```
## cl.account_os_account.7 系统帐号getActivatedOsAccountIds命名变更 ## cl.account_os_account.8 系统帐号getActivatedOsAccountIds命名变更
getActivatedOsAccountIds由于命名不统一问题,名称变更为getActivatedOsAccountLocalIds。 getActivatedOsAccountIds由于命名不统一问题,名称变更为getActivatedOsAccountLocalIds。
...@@ -258,7 +275,7 @@ interface AccountManager { ...@@ -258,7 +275,7 @@ interface AccountManager {
getActivatedOsAccountLocalIds(): Promise<Array<number>>; getActivatedOsAccountLocalIds(): Promise<Array<number>>;
``` ```
## cl.account_os_account.8 系统帐号queryOsAccountLocalIdBySerialNumber命名变更 ## cl.account_os_account.9 系统帐号queryOsAccountLocalIdBySerialNumber命名变更
queryOsAccountLocalIdBySerialNumber由于命名不统一问题,名称变更为getOsAccountLocalIdForSerialNumber。 queryOsAccountLocalIdBySerialNumber由于命名不统一问题,名称变更为getOsAccountLocalIdForSerialNumber。
...@@ -291,7 +308,7 @@ interface AccountManager { ...@@ -291,7 +308,7 @@ interface AccountManager {
getOsAccountLocalIdForSerialNumber(serialNumber: number): Promise<number>; getOsAccountLocalIdForSerialNumber(serialNumber: number): Promise<number>;
``` ```
## cl.account_os_account.9 系统帐号querySerialNumberByOsAccountLocalId命名变更 ## cl.account_os_account.10 系统帐号querySerialNumberByOsAccountLocalId命名变更
querySerialNumberByOsAccountLocalId由于命名不统一问题,名称变更为getSerialNumberForOsAccountLocalId。 querySerialNumberByOsAccountLocalId由于命名不统一问题,名称变更为getSerialNumberForOsAccountLocalId。
...@@ -324,7 +341,7 @@ interface AccountManager { ...@@ -324,7 +341,7 @@ interface AccountManager {
getSerialNumberForOsAccountLocalId(localId: number): Promise<number>; getSerialNumberForOsAccountLocalId(localId: number): Promise<number>;
``` ```
## cl.account_os_account.10 系统帐号getBundleIdFromUid命名变更 ## cl.account_os_account.11 系统帐号getBundleIdFromUid命名变更
getBundleIdFromUid由于命名不统一问题,名称变更为getBundleIdForUid。 getBundleIdFromUid由于命名不统一问题,名称变更为getBundleIdForUid。
...@@ -357,7 +374,7 @@ interface AccountManager { ...@@ -357,7 +374,7 @@ interface AccountManager {
getBundleIdForUid(uid: number): Promise<number>; getBundleIdForUid(uid: number): Promise<number>;
``` ```
## cl.account_os_account.11 系统帐号queryOsAccountConstraintSourceTypes命名变更 ## cl.account_os_account.12 系统帐号queryOsAccountConstraintSourceTypes命名变更
queryOsAccountConstraintSourceTypes由于命名不统一问题,名称变更为getOsAccountConstraintSourceTypes。 queryOsAccountConstraintSourceTypes由于命名不统一问题,名称变更为getOsAccountConstraintSourceTypes。
......
# ANS通知子系统ChangeLog # ANS通知子系统ChangeLog
## cl.notificationManager.1 接口名变更 ## cl.notificationManager.1 接口名变更
基于此前接口名定义不够规范,与其他功能类型的接口命名不一致,对此接口名进行变更。 基于此前接口名定义不够规范,与其他功能类型的接口命名不一致,对此接口名进行变更。
**变更影响** **变更影响**
底层仍支持原接口功能,不影响4.0.2.3版本调用该接口的应用。 底层仍支持原接口功能,不影响4.0.2.3版本调用该接口的应用。
**关键接口/组件变更** **关键接口/组件变更**
| 包名 | 旧接口 | 新接口 | | 包名 | 旧接口 | 新接口 |
| --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ohos.notificationManager.d.ts | **function** supportDoNotDisturbMode(callback: AsyncCallback<boolean>): **void**; | **function** isSupportDoNotDisturbMode(callback: AsyncCallback<boolean>): **void**; | | ohos.notificationManager.d.ts | **function** supportDoNotDisturbMode(callback: AsyncCallback<boolean>): **void**; | **function** isSupportDoNotDisturbMode(callback: AsyncCallback<boolean>): **void**; |
| ohos.notificationManager.d.ts | **function** supportDoNotDisturbMode(): Promise<boolean>; | **function** isSupportDoNotDisturbMode(): Promise<boolean>; | | ohos.notificationManager.d.ts | **function** supportDoNotDisturbMode(): Promise<boolean>; | **function** isSupportDoNotDisturbMode(): Promise<boolean>; |
**适配指导** **适配指导**
按新的接口isSupportDoNotDisturbMode调用。 按新的接口isSupportDoNotDisturbMode调用。
...@@ -351,4 +351,166 @@ struct NestedScroll { ...@@ -351,4 +351,166 @@ struct NestedScroll {
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20) }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding(20)
} }
} }
``` ```
\ No newline at end of file
## cl.arkui.4 getInspectorTree接口返回值从string修改为Object。
**变更影响**
4.0.3.2之前使用getInspectorTree接口的代码需要适配
**关键的接口/组件变更**
getInspectorTree接口返回值从string修改为Object
**适配指导**
将getInspectorTree返回值作为string使用的代码需要修改,比如以下示例代码:
```typescript
console.info(getInspectorTree())
```
需要修改成
```typescript
console.info(JSON.stringify(getInspectorTree()))
```
## cl.arkui.5 废弃GridItem的forceRebuild属性
**变更影响**
无,该属性无作用
**关键的接口/组件变更**
GridItem的forceRebuild属性废弃
**适配指导**
如有使用可以直接删除,不影响GridItem功能
## cl.arkui.6 API9 router接口整改。
ohos.router中的enableAlertBeforeBackPage、enableBackPageAlert、disableAlertBeforeBackPage接口名不利于开发者理解,更改为showAlertBeforeBackPage、hideAlertBeforeBackPage。
**变更影响**
router的enableAlertBeforeBackPage、enableBackPageAlert接口需替换为showAlertBeforeBackPage;
disableAlertBeforeBackPage接口需替换为hideAlertBeforeBackPage。
**关键的接口/组件变更**
涉及router.enableAlertBeforeBackPage, router.enableBackPageAlert, router.disableAlertBeforeBackPage。
* 变更前:
```ts
router.enableAlertBeforeBackPage();
router.enableBackPageAlert()
```
* 变更后:
```ts
router.showAlertBeforeBackPage()
```
* 变更前:
```ts
router.disableAlertBeforeBackPage()
```
* 变更后:
```ts
router.hideAlertBeforeBackPage()
```
**适配指导**
将enableAlertBeforeBackPage、enableBackPageAlert替换为showAlertBeforeBackPage;
将disableAlertBeforeBackPage替换为hideAlertBeforeBackPage。
## cl.arkui.7 List组件和Gird组件滚动条默认状态变更
List组件和Gird组件滚动条默认状态从BarState.Off变更为BarState.Auto。
**变更影响**
List组件和Gird组件,如果没有设置滚动条状态,变更前不会显示滚动条,变更以后滚动时会显示滚动条,滚动停止两秒后滚动条隐藏。
**关键接口/组件变更**
List组件和Gird组件滚动条API接口文档:
- [List组件属性](../../../application-dev/reference/arkui-ts/ts-container-list.md#属性)
- [Grid组件属性](../../../application-dev/reference/arkui-ts/ts-container-grid.md#属性)
**适配指导**
对于不需要滚动条的场景,需要将List组件或Grid组件的scrollBar属性设置为BarState.Off。
参考代码如下:
```ts
// xxx.ets
@Entry
@Component
struct ListItemExample {
private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
build() {
Column() {
List({ space: 20, initialIndex: 0 }) {
ForEach(this.arr, (item) => {
ListItem() {
Text('' + item)
.width('100%').height(100).fontSize(16)
.textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
}
}, item => item)
}
.width('90%')
.scrollBar(BarState.Off)
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
}
}
```
## cl.arkui.8 修复Stack布局问题
修复问题:[Stack](../../../application-dev/reference/arkui-ts/ts-container-stack.md)设置alignContent,在子组件超出父组件的场景中,子组件未按照alignContent布局
示例:
```ts
@Entry
@Component
struct StackExample {
build() {
Stack({alignContent:Alignment.TopEnd}){
Text('First child, show in bottom')
.width(200).height(200).backgroundColor(0xd2cab3).margin(10)
}.width(150).height(150).backgroundColor(Color.Pink).margin(100)
}
}
```
修复前:子组件未能按照alignContent:Alignment.TopEnd布局
![stack](figures/stack_before.jpg)
修复后:子组件可以按照alignContent:Alignment.TopEnd布局
![stack](figures/stack_after.jpg)
**变更影响**
1. 如果应用中有子组件大小大于父组件Stack的场景,需要应用进行适配。
2. 应用之前可能采用的规避方案:给子组件设置Offset或者translate
**适配指导**
去掉之前给子组件设置的Offset或者translate,使用alignContent实际布局方式进行布局。
\ No newline at end of file
# 包管理子系统ChangeLog # 包管理子系统ChangeLog
## cl.bundlemanager.1 包管理底层能力变更,仅支持系统资源HAP自定义权限,其它HAP均不支持自定义权限。
## cl.bundlemanager.1 底层能力变更,安装hap时,hap中的文件不再解压到安装目录。
安装hap后,安装目录下只会存在hap文件,应用不能再使用拼接路径访问解压后的资源文件,应用想要访问资源文件,需要使用标准的资源管理接口。
**变更影响**<br>
如果应用使用拼接路径的形式访问资源文件,会访问失败。需要修改成使用资源管理接口访问资源文件。
**关键的接口/组件变更**<br>
不涉及接口及组件变更
**适配指导**<br>
资源管理子系统提供Js接口访问资源文件。参考[访问资源文件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-resource-manager.md#getrawfilecontent9)
## cl.bundlemanager.2 包管理删除@ohos.bundle.bundleManager.d.ts中的getAbilityIcon接口,可以使用@ohos.resourceManager.d.ts中的getMediaContent替换。
包管理删除[@ohos.bundle.bundleManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleManager.d.ts)中的getAbilityIcon接口,可以使用[@ohos.resourceManager.d.ts](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.resourceManager.d.ts)中的getMediaContent替换。
**变更影响**<br>
使用之前已发布的API 9各beta版本且使用到了getAbilityIcon接口的,需要改为使用getMediaContent接口。
**关键的接口/组件变更**<br>
删除@ohos.bundle.bundleManager.d.ts中的getAbilityIcon接口。
**适配指导**<br>
使用@ohos.bundle.bundleManager.d.ts下面的getAbilityIcon,需要修改为@ohos.resourceManager.d.ts中的getMediaContent。需要提前获取到图标的资源ID值,可参考该接口的[使用指导](../../../application-dev/reference/apis/js-apis-resource-manager.md#getmediacontent9)
## cl.bundlemanager.3 包管理新增202错误码
包管理系统新增202错误码,非系统应用调用api9及之后包管理提供的系统api,将返回错误202。
**变更影响**<br>
非系统应用调用api9及之后包管理提供的系统api,将返回错误202。
**关键的接口/组件变更**<br>
所有包管理提供的api9及之后的系统api,非系统应用调用将返回错误202。
**适配指导**<br>
不影响已开发的程序,无需适配。
## cl.bundlemanager.4 包管理底层能力变更,仅支持系统资源HAP自定义权限,其它HAP均不支持自定义权限。
仅支持系统资源HAP自定义权限,其它HAP均不支持自定义权限。包管理在解析HAP时,仅支持解析资源HAP(包名为:ohos.global.systemres)的配置文件中的definePermissions字段,该字段用来定义权限。其它HAP中配置的definePermissions字段将不会解析。 仅支持系统资源HAP自定义权限,其它HAP均不支持自定义权限。包管理在解析HAP时,仅支持解析资源HAP(包名为:ohos.global.systemres)的配置文件中的definePermissions字段,该字段用来定义权限。其它HAP中配置的definePermissions字段将不会解析。
如果有应用需要自定义权限,可以在资源HAP的[配置文件](https://gitee.com/openharmony/utils_system_resources/blob/master/systemres/main/config.json)中definePermissions字段下面新增定义权限。格式可参考[定义权限](../../../application-dev/quick-start/module-structure.md#definepermissions对象内部结构) 如果有应用需要自定义权限,可以在资源HAP的[配置文件](https://gitee.com/openharmony/utils_system_resources/blob/master/systemres/main/config.json)中definePermissions字段下面新增定义权限。格式可参考[定义权限](../../../application-dev/quick-start/module-structure.md#definepermissions对象内部结构)
...@@ -14,7 +56,7 @@ ...@@ -14,7 +56,7 @@
**适配指导**<br> **适配指导**<br>
如果有应用需要自定义权限,可以在资源HAP的[配置文件](https://gitee.com/openharmony/utils_system_resources/blob/master/systemres/main/config.json)中definePermissions字段下面新增定义权限。格式可参考[定义权限](../../../application-dev/quick-start/module-structure.md#definepermissions对象内部结构) 如果有应用需要自定义权限,可以在资源HAP的[配置文件](https://gitee.com/openharmony/utils_system_resources/blob/master/systemres/main/config.json)中definePermissions字段下面新增定义权限。格式可参考[定义权限](../../../application-dev/quick-start/module-structure.md#definepermissions对象内部结构)
## cl.bundlemanager.2 包管理二级模块文件名称变更,修改为文件内对应的接口名称 ## cl.bundlemanager.5 包管理二级模块文件名称变更,修改为文件内对应的接口名称
包管理二级模块文件名称变更,修改为文件内对应的接口名称,变更文件如下: 包管理二级模块文件名称变更,修改为文件内对应的接口名称,变更文件如下:
...@@ -58,7 +100,7 @@ import {ExtensionAbilityInfo} from 'bundleManger/ExtensionAbilityInfo'; ...@@ -58,7 +100,7 @@ import {ExtensionAbilityInfo} from 'bundleManger/ExtensionAbilityInfo';
import {BundlePackInfo} from 'bundleManger/BundlePackInfo'; import {BundlePackInfo} from 'bundleManger/BundlePackInfo';
``` ```
## cl.bundlemanager.3 包管理LaunchType枚举类型名称变更,由STANDARD修改为MULTITON,枚举值不变。 ## cl.bundlemanager.6 包管理LaunchType枚举类型名称变更,由STANDARD修改为MULTITON,枚举值不变。
包管理[LaunchType](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleManager.d.ts)枚举类型变更,由STANDARD修改为MULTITON,枚举值不变,表示多实例类型。 包管理[LaunchType](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.bundle.bundleManager.d.ts)枚举类型变更,由STANDARD修改为MULTITON,枚举值不变,表示多实例类型。
...@@ -71,7 +113,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M ...@@ -71,7 +113,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M
**适配指导**<br> **适配指导**<br>
由LaunchType.STANDARD修改为LaunchType.MULTITON。 由LaunchType.STANDARD修改为LaunchType.MULTITON。
## cl.bundlemanager.4 包管理AbilityInfo结构体中isVisible字段修改为exported,类型不变。 ## cl.bundlemanager.7 包管理AbilityInfo结构体中isVisible字段修改为exported,类型不变。
包管理[AbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/AbilityInfo.d.ts)结构体中isVisible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。 包管理[AbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/AbilityInfo.d.ts)结构体中isVisible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。
...@@ -84,7 +126,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M ...@@ -84,7 +126,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M
**适配指导**<br> **适配指导**<br>
由isVisible修改为exported。 由isVisible修改为exported。
## cl.bundlemanager.5 包管理ExtensionAbilityInfo结构体中isVisible字段修改为exported,类型不变。 ## cl.bundlemanager.8 包管理ExtensionAbilityInfo结构体中isVisible字段修改为exported,类型不变。
包管理[ExtensionAbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ExtensionAbilityInfo.d.ts)结构体中isVisible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。 包管理[ExtensionAbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/ExtensionAbilityInfo.d.ts)结构体中isVisible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。
...@@ -97,7 +139,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M ...@@ -97,7 +139,7 @@ LaunchType枚举类型名称变更,由LaunchType.STANDARD修改为LaunchType.M
**适配指导**<br> **适配指导**<br>
由isVisible修改为exported。 由isVisible修改为exported。
## cl.bundlemanager.6 包管理ModuleAbilityInfo结构体中visible字段修改为exported,类型不变。 ## cl.bundlemanager.9 包管理ModuleAbilityInfo结构体中visible字段修改为exported,类型不变。
包管理[ModuleAbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/BundlePackInfo.d.ts)结构体中visible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。 包管理[ModuleAbilityInfo](https://gitee.com/openharmony/interface_sdk-js/blob/master/api/bundleManager/BundlePackInfo.d.ts)结构体中visible字段修改为exported,类型不变,表示当前ability是否支持导出,被其他的ability使用。
......
...@@ -143,3 +143,25 @@ import volumeManager from '@ohos.volumeManager'; ...@@ -143,3 +143,25 @@ import volumeManager from '@ohos.volumeManager';
```js ```js
import volumeManager from '@ohos.file.volumeManager'; import volumeManager from '@ohos.file.volumeManager';
``` ```
## cl.filemanagement.8 Filter类型模块变更
**变更影响**
基于此前版本开发的应用,需注意d.ts位置的变更及import模块名的变更。现Filter类型变更至@ohos.file.fs模块下。Filter类型具体属性不变。
**关键接口/组件变更**
原Filter类型在模块@ohos.fileio下,通过以下方式import:
```js
import Filter from '@ohos.fileio';
```
**适配指导**
现Filter类型在模块@ohos.file.fs,通过以下方式import:
```js
import Filter from '@ohos.file.fs';
```
# 全球化子系统ChangeLog # 全球化子系统ChangeLog
## cl.global.1 国际化模块系统接口添加运行时鉴权
全球化子系统国际化组件在如下场景中提供的系统接口添加运行时鉴权。从API9开始作以下变更:
- 设置系统语言、系统国家或地区、系统区域
- 设置系统24小时制
- 添加、移除系统偏好语言
- 设置本地化数字
开发者需要根据以下说明对应用进行适配。
**变更影响**
上述场景涉及的国际化系统接口添加运行时鉴权,只有具有UPDATE_CONFIGURATION权限的系统应用可以正常调用。
**关键的接口/组件变更**
- 涉及接口
- setSystemLanguage(language: string): void;
- setSystemRegion(region: string): void;
- setSystemLocale(locale: string): void;
- set24HourClock(option: boolean): void;
- addPreferredLanguage(language: string, index?: number): void;
- removePreferredLanguage(index: number): void;
- setUsingLocalDigit(flag: boolean): void;
**适配指导**
确保应用为系统应用,非系统应用禁止调用上述接口。
当前权限不足或非系统应用调用该接口时会抛出异常,可以通过try-catch来捕获异常。
```js
import I18n from '@ohos.i18n'
try {
I18n.System.setSystemLanguage('zh');
} catch(error) {
console.error(`call System.setSystemLanguage failed, error code: ${error.code}, message: ${error.message}.`)
}
```
## cl.resourceManager.1 资源获取rawfile文件描述符接口含义变更 ## cl.resourceManager.1 资源获取rawfile文件描述符接口含义变更
相较于之前的版本,在4.0.2.2 版本中,新增不解压特性,rawfile文件描述符接口返回值的含义发生了变化。接口用于返回获取的rawfile文件的descriptor:RawFileDescriptor {fd,offset, length},由于不解压特性变更,返回值没发生变化,但返回值的含义发生了变化, 变化如下: 相较于之前的版本,在4.0.2.2 版本中,新增不解压特性,rawfile文件描述符接口返回值的含义发生了变化。接口用于返回获取的rawfile文件的descriptor:RawFileDescriptor {fd,offset, length},由于不解压特性变更,返回值没发生变化,但返回值的含义发生了变化, 变化如下:
...@@ -55,3 +96,49 @@ try { ...@@ -55,3 +96,49 @@ try {
console.error(`callback getRawFd failed, error code: ${error.code}, message: ${error.message}.`) console.error(`callback getRawFd failed, error code: ${error.code}, message: ${error.message}.`)
}; };
``` ```
## cl.resourceManager.2 getStringSync、getStringByNameSync新增接口
相较于之前的版本,在4.0.6.2 版本中,为扩展getStringSync、getStringByNameSync接口字符串匹配功能,新增了接口以及相应的错误码。
| 包名 | 新增接口 |
| --------------- | ---------------------------------------------------- |
| ohos.resourceManager.d.ts | getStringSync(resId: number, ...args: Array<string \| number>): string; |
| ohos.resourceManager.d.ts | getStringSync(resource: Resource, ...args: Array<string \| number>): string; |
| ohos.resourceManager.d.ts | getStringByNameSync(resName: string, ...args: Array<string \| number>): string; |
**变更影响**
之前只能直接获取resources中的string资源的value值,在4.0.6.2 及以上版本中可用通过参数格式化string资源的value值,扩展了格式化字符串的查询能力。
新增错误码:
9001007 根据当前id获取的资源格式化失败
9001008 根据当前名称获取的资源格式化失败
**示例代码**
以调用接口getStringSync为例,变更前只支持示例1,变更后示例1、示例2都支持。
```
示例1:
try {
this.context.resourceManager.getStringSync($r('app.string.test').id);
} catch (error) {
console.error(`getStringSync failed, error code: ${error.code}, message: ${error.message}.`)
}
示例2:
try {
this.context.resourceManager.getStringSync($r('app.string.test').id, "format string", 787, 98.78);
} catch (error) {
console.error(`getStringSync failed, error code: ${error.code}, message: ${error.message}.`)
}
```
**适配指导**
请参考接口说明:
[新增接口参考](../../../application-dev/reference/apis/js-apis-resource-manager.md)
[新增错误码参考](../../../application-dev/reference/errorcodes/errorcode-resource-manager.md)
\ No newline at end of file
# HUKS子系统ChangeLog # HUKS子系统ChangeLog
## cl.huks.1 HUKS支持可选设置rsa_pss_salt_length类型 OpenHarmony 4.0.6.1 版本相较于OpenHarmony 之前的版本,HUKS的API使用权限变更如下。
变更之前,应用在签名/验签时,HUKS默认使用RSA_PSS_SALT_LEN_MAX进行处理; ## cl.huks.1 attestKeyItem接口使用权限变更
变更之后,应用在签名/验签需传入HuksRsaPssSaltLenType中定义的类型。若不传入,则默认使用RSA_PSS_SALT_LEN_MAX进行处理。 attestKeyItem是基于设备证书链封装业务公钥对用户指定的密钥进行证明,如果设备证书随意导出涉及用户隐私风险,所以此接口需要增加系统权限管控。
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 对于不具备system权限或者ohos.permission.ACCESS_IDS权限的应用,无法正常使用attestKeyItem接口。
**关键的接口/组件变更** **关键的接口/组件变更**
发布的JS接口不变, 传入接口的参数集合发生变更。 - 涉及接口
**适配指导** attestKeyItem(keyAlias: string, options: HuksOptions, callback: AsyncCallback\<HuksReturnResult\>): void;
attestKeyItem(keyAlias: string, options: HuksOptions): Promise\<HuksReturnResult\>;
以RSA签名为例,示例代码如下:
- 变更前:
```js
import huks from '@ohos.security.huks'; 只针对传入ATTESTATION_ID相关TAG的应用校验AccessToken权限,其它情况无接口权限的限制。
let keyAlias = 'rsa_Key';
let inData = new Uint8Array( - 变更后:
0x4B, 0x1E, 0x22, 0x64, 0xA9, 0x89, 0x60, 0x1D, 0xEC, 0x78, 0xC0, 0x5D, 0xBE, 0x46, 0xAD, 0xCF,
0x1C, 0x35, 0x16, 0x11, 0x34, 0x01, 0x4E, 0x9B, 0x7C, 0x00, 0x66, 0x0E, 0xCA, 0x09, 0xC0, 0xF3, 只有具备system权限的系统应用或者申请了ohos.permission.ACCESS_IDS权限的普通应用才能正常使用attestKeyItem接口。
);
/* 签名参数 */ **适配指导**
let signProperties = new Array();
signProperties[0] = { 已经具备system权限的应用则可以正常使用attestKeyItem接口,其余普通应用需申请ohos.permission.ACCESS_IDS权限即可,申请方法参考[ACL权限配置说明](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/accesstoken-overview.md#%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%88%97%E8%A1%A8acl%E8%AF%B4%E6%98%8E)
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA,
} ## cl.huks.2 HUKS支持可选设置rsa_pss_salt_length类型
signProperties[1] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE, 变更之前,应用在签名/验签时,HUKS默认使用RSA_PSS_SALT_LEN_MAX进行处理;
value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN 变更之后,应用在签名/验签需传入HuksRsaPssSaltLenType中定义的类型。若不传入,则默认使用RSA_PSS_SALT_LEN_MAX进行处理。
}
signProperties[2] = { **变更影响**
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048, 影响已发布的JS接口,接口行为发生变更。
}
signProperties[3] = { **关键的接口/组件变更**
tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_PSS, 发布的JS接口不变, 传入接口的参数集合发生变更。
}
signProperties[4] = { **适配指导**
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA1, 以RSA签名为例,示例代码如下:
}
signProperties[5] = { ```js
tag: huks.HuksTag.HUKS_TAG_RSA_PSS_SALT_LEN_TYPE, import huks from '@ohos.security.huks';
value: huks.HuksRsaPssSaltLenType.HUKS_RSA_PSS_SALT_LEN_MAX,
} let keyAlias = 'rsa_Key';
let signOptions = { let inData = new Uint8Array(
properties: signProperties, 0x4B, 0x1E, 0x22, 0x64, 0xA9, 0x89, 0x60, 0x1D, 0xEC, 0x78, 0xC0, 0x5D, 0xBE, 0x46, 0xAD, 0xCF,
inData: inData 0x1C, 0x35, 0x16, 0x11, 0x34, 0x01, 0x4E, 0x9B, 0x7C, 0x00, 0x66, 0x0E, 0xCA, 0x09, 0xC0, 0xF3,
} );
/* 签名参数 */
huks.initSession(keyAlias, signOptions); let signProperties = new Array();
``` signProperties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md) value: huks.HuksKeyAlg.HUKS_ALG_RSA,
}
## cl.huks.2 HUKS解决派生密钥/协商密钥的存储/导出问题 signProperties[1] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
变更之前,派生密钥/协商密钥既支持存储,又支持导出,存在安全风险; value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN
变更之后,应用在派生密钥/协商密钥时需传入HuksKeyStorageType中定义的类型。应用只能选择存储,或者选择导出。若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。 }
signProperties[2] = {
**变更影响** tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_2048,
影响已发布的JS接口,接口行为发生变更。 }
signProperties[3] = {
**关键的接口/组件变更** tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_PSS,
发布的JS接口不变, 传入接口的参数集合发生变更。 }
signProperties[4] = {
**适配指导** tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA1,
接口使用的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md) }
signProperties[5] = {
## cl.huks.3 新增用于细粒度用户身份访问控制的Tag tag: huks.HuksTag.HUKS_TAG_RSA_PSS_SALT_LEN_TYPE,
value: huks.HuksRsaPssSaltLenType.HUKS_RSA_PSS_SALT_LEN_MAX,
新增用于细粒度用户身份访问控制的HuksTag: HUKS_TAG_KEY_AUTH_PURPOSE,业务可在原有用户身份访问控制能力上,选择某种特定算法用途下需要用户身份访问控制能力。 }
let signOptions = {
**变更影响** properties: signProperties,
inData: inData
新增的HuksTag,不影响已有的接口。 }
**关键的接口/组件变更** huks.initSession(keyAlias, signOptions);
```
只新增了HuksTag: HUKS_TAG_KEY_AUTH_PURPOSE, 用于支持细粒度用户身份访问控制。
更多接口的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)
**适配指导**
## cl.huks.3 HUKS解决派生密钥/协商密钥的存储/导出问题
变更之前,派生密钥/协商密钥既支持存储,又支持导出,存在安全风险;
变更之后,应用在派生密钥/协商密钥时需传入HuksKeyStorageType中定义的类型。应用只能选择存储,或者选择导出。若不传入,则默认同时支持存储和导出,存在安全问题,不推荐业务使用。
**变更影响**
影响已发布的JS接口,接口行为发生变更。
**关键的接口/组件变更**
发布的JS接口不变, 传入接口的参数集合发生变更。
**适配指导**
接口使用的示例代码可参考[HUKS-guidelines](../../../application-dev/security/huks-guidelines.md)[HUKS API](../../../application-dev/reference/apis/js-apis-huks.md)
## cl.huks.3 新增用于细粒度用户身份访问控制的Tag
新增用于细粒度用户身份访问控制的HuksTag: HUKS_TAG_KEY_AUTH_PURPOSE,业务可在原有用户身份访问控制能力上,选择某种特定算法用途下需要用户身份访问控制能力。
**变更影响**
新增的HuksTag,不影响已有的接口。
**关键的接口/组件变更**
只新增了HuksTag: HUKS_TAG_KEY_AUTH_PURPOSE, 用于支持细粒度用户身份访问控制。
**适配指导**
接口使用的示例代码可参考[密钥访问控制_细粒度用户身份认证访问控制](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/huks-guidelines.md#%E5%AF%86%E9%92%A5%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6),接口定义参考[HuksTag](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukstag) 接口使用的示例代码可参考[密钥访问控制_细粒度用户身份认证访问控制](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/huks-guidelines.md#%E5%AF%86%E9%92%A5%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6),接口定义参考[HuksTag](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-huks.md#hukstag)
\ No newline at end of file
# 泛Sensor子系统Changelog # 泛Sensor子系统Changelog
## cl.vibrator.isSupportEffect接口新增 ## cl.vibrator.isSupportEffect接口新增
新增isSupportEffect接口。 新增isSupportEffect接口。
**变更影响** **变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可使用isSupportEffect接口查询传入effectId是否支持。 基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可使用isSupportEffect接口查询传入effectId是否支持。
**关键接口/组件变更** **关键接口/组件变更**
@ohos.vibrator.d.ts中新增isSupportEffect接口。 @ohos.vibrator.d.ts中新增isSupportEffect接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- | | -- | -- | -- | -- |
| @ohos.vibrator.d.ts | vibrator | isSupportEffect(effectId: string, callback: AsyncCallback&lt;boolean&gt;): void | 新增 | | @ohos.vibrator.d.ts | vibrator | isSupportEffect(effectId: string, callback: AsyncCallback&lt;boolean&gt;): void | 新增 |
| @ohos.vibrator.d.ts | vibrator | isSupportEffect(effectId: string): Promise&lt;boolean&gt; | 新增 | | @ohos.vibrator.d.ts | vibrator | isSupportEffect(effectId: string): Promise&lt;boolean&gt; | 新增 |
**适配指导**<br> **适配指导**<br>
通过调用isSupportEffect接口查询是否支持传入的参数effectId。 通过调用isSupportEffect接口查询是否支持传入的参数effectId。
```ts ```ts
import vibrator from '@ohos.vibrator'; import vibrator from '@ohos.vibrator';
try { try {
// 查询是否支持'haptic.clock.timer' // 查询是否支持'haptic.clock.timer'
vibrator.isSupportEffect('haptic.clock.timer', function (err, state) { vibrator.isSupportEffect('haptic.clock.timer', function (err, state) {
if (err) { if (err) {
console.error('isSupportEffect failed, error:' + JSON.stringify(err)); console.error('isSupportEffect failed, error:' + JSON.stringify(err));
return; return;
} }
console.log('The effectId is ' + (state ? 'supported' : 'unsupported')); console.log('The effectId is ' + (state ? 'supported' : 'unsupported'));
if (state) { if (state) {
try { try {
vibrator.startVibration({ // 使用startVibration需要添加ohos.permission.VIBRATE权限 vibrator.startVibration({ // 使用startVibration需要添加ohos.permission.VIBRATE权限
type: 'preset', type: 'preset',
effectId: 'haptic.clock.timer', effectId: 'haptic.clock.timer',
count: 1, count: 1,
}, { }, {
usage: 'unknown' usage: 'unknown'
}, (error) => { }, (error) => {
if(error) { if(error) {
console.error('haptic.clock.timer vibrator error:' + JSON.stringify(error)); console.error('haptic.clock.timer vibrator error:' + JSON.stringify(error));
} else { } else {
console.log('haptic.clock.timer vibrator success'); console.log('haptic.clock.timer vibrator success');
} }
}); });
} catch (error) { } catch (error) {
console.error('Exception in, error:' + JSON.stringify(error)); console.error('Exception in, error:' + JSON.stringify(error));
} }
} }
}) })
} catch (error) { } catch (error) {
console.error('Exception in, error:' + JSON.stringify(error)); console.error('Exception in, error:' + JSON.stringify(error));
} }
``` ```
## cl.vibrator.stopVibration接口新增 ## cl.vibrator.stopVibration接口新增
新增stopVibration接口。 新增stopVibration接口。
**变更影响** **变更影响**
基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可使用stopVibration接口停止所有类型的振动。 基于OpenHarmony4.0.5.2及之后的SDK版本开发的应用,可使用stopVibration接口停止所有类型的振动。
**关键接口/组件变更** **关键接口/组件变更**
@ohos.vibrator.d.ts中新增stopVibration接口。 @ohos.vibrator.d.ts中新增stopVibration接口。
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| ------------------- | -------- | -------------------------------------------------------- | -------- | | ------------------- | -------- | -------------------------------------------------------- | -------- |
| @ohos.vibrator.d.ts | vibrator | stopVibration(callback: AsyncCallback&lt;void&gt;): void | 新增 | | @ohos.vibrator.d.ts | vibrator | stopVibration(callback: AsyncCallback&lt;void&gt;): void | 新增 |
| @ohos.vibrator.d.ts | vibrator | stopVibration(): Promise&lt;void&gt; | 新增 | | @ohos.vibrator.d.ts | vibrator | stopVibration(): Promise&lt;void&gt; | 新增 |
**适配指导**<br> **适配指导**<br>
通过调用stopVibration接口停止所有类型的振动。 通过调用stopVibration接口停止所有类型的振动。
```ts ```ts
import vibrator from '@ohos.vibrator'; import vibrator from '@ohos.vibrator';
try { try {
// 停止所有模式的马达振动 // 停止所有模式的马达振动
vibrator.stopVibration(function (error) { vibrator.stopVibration(function (error) {
if (error) { if (error) {
console.log('error.code' + error.code + 'error.message' + error.message); console.log('error.code' + error.code + 'error.message' + error.message);
return; return;
} }
console.log('Callback returned to indicate successful.'); console.log('Callback returned to indicate successful.');
}) })
} catch (error) { } catch (error) {
console.info('errCode: ' + error.code + ' ,msg: ' + error.message); console.info('errCode: ' + error.code + ' ,msg: ' + error.message);
} }
``` ```
# 资源调度子系统ChangeLog # 资源调度子系统ChangeLog
## cl.resourceschedule.reminderAgent.1 ## cl.resourceschedule.workScheduler.1
提醒代理支持系统应用设置自定义按钮,并且自定义按钮可跳转指定应用界面。 WorkSchedulerExtensionAbility提供默认的WorkSchedulerExtensionContext。
**变更影响** **变更影响**
基于OpenHarmony4.0.7.1及之后的SDK版本开发的系统应用,可设置提醒自定义按钮。 基于OpenHarmony4.0.5.1及之后的SDK版本开发的应用,可使用默认的context属性作为WorkSchedulerExtension的上下文环境。
**关键接口/组件变更** **关键接口/组件变更**
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | @ohos.WorkSchedulerExtensionAbility.d.ts中新增context属性。新增文件application/WorkSchedulerExtensionContext.d.ts,继承自ExtensionContext。
| -- | -- | -- | -- |
| reminderAgentManager | ActionButtonType | ACTION_BUTTON_TYPE_CUSTOM = 2 | 新增 | | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| reminderAgentManager | ActionButton | wantAgent?: WantAgent | 新增 | | -- | -- | -- | -- |
| reminderAgentManager | WantAgent | uri?: string | 新增 | | @ohos.WorkSchedulerExtensionAbility.d.ts | WorkSchedulerExtensionAbility | context: WorkSchedulerExtensionContext; | 新增 |
| reminderAgentManager | ReminderRequest | actionButton?: [ActionButton?, ActionButton?, ActionButton?] | 变更 | | application/WorkSchedulerExtensionContext.d.ts | WorkSchedulerExtensionContext | - | 新增 |
**适配指导**<br> **适配指导**<br>
```ts 通过WorkSchedulerExtensionAbility子类实例来获取WorkSchedulerExtensionContext。
import reminderAgentManager from '@ohos.reminderAgentManager';
```ts
let targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = { import WorkSchedulerExtensionAbility from '@ohos.WorkSchedulerExtensionAbility';
reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型
... class MyWorkSchedulerExtensionAbility extends WorkSchedulerExtensionAbility {
actionButton: [ onWorkStart(workInfo) {
{ let WorkSchedulerExtensionContext = this.context; // 获取WorkSchedulerExtensionContext
title: '稍后提醒', }
type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE }
}, ```
{
title: '关闭',
type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE ## cl.resourceschedule.reminderAgent.1
},
{ 提醒代理支持系统应用设置自定义按钮,并且自定义按钮可跳转指定应用界面。
title: '自定义',
type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CUSTOM, **变更影响**
wantAgent: {
pkgName: "com.example.myapplication", 基于OpenHarmony4.0.7.1及之后的SDK版本开发的系统应用,可设置提醒自定义按钮。
abilityName: "EntryAbility",
} **关键接口/组件变更**
},
] | 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
} | -- | -- | -- | -- |
``` | reminderAgentManager | ActionButtonType | ACTION_BUTTON_TYPE_CUSTOM = 2 | 新增 |
| reminderAgentManager | ActionButton | wantAgent?: WantAgent | 新增 |
## cl.resourceschedule.reminderAgent.2 | reminderAgentManager | WantAgent | uri?: string | 新增 |
| reminderAgentManager | ReminderRequest | actionButton?: [ActionButton?, ActionButton?, ActionButton?] | 变更 |
提醒代理支持设置通知自动消失和自动消失时间。
**适配指导**<br>
**变更影响**
```ts
基于OpenHarmony4.0.7.1及之后的SDK版本开发的系统应用,可设置提醒自动消失。 import reminderAgentManager from '@ohos.reminderAgentManager';
**关键接口/组件变更** let targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = {
reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 | ...
| -- | -- | -- | -- | actionButton: [
| reminderAgentManager | ReminderRequest | tapDismissed?: boolean | 新增 | {
| reminderAgentManager | ReminderRequest | autoDeletedTime?: number | 新增 | title: '稍后提醒',
type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
**适配指导**<br> },
{
```ts title: '关闭',
import reminderAgentManager from '@ohos.reminderAgentManager'; type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
},
let targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = { {
reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型 title: '自定义',
... type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CUSTOM,
tapDismissed: true, wantAgent: {
autoDeletedTime: 300, pkgName: "com.example.myapplication",
} abilityName: "EntryAbility",
}
},
]
}
```
## cl.resourceschedule.reminderAgent.2
提醒代理支持设置通知自动消失和自动消失时间。
**变更影响**
基于OpenHarmony4.0.7.1及之后的SDK版本开发的系统应用,可设置提醒自动消失。
**关键接口/组件变更**
| 模块名 | 类名 | 方法/属性/枚举/常量 | 变更类型 |
| -- | -- | -- | -- |
| reminderAgentManager | ReminderRequest | tapDismissed?: boolean | 新增 |
| reminderAgentManager | ReminderRequest | autoDeletedTime?: number | 新增 |
**适配指导**<br>
```ts
import reminderAgentManager from '@ohos.reminderAgentManager';
let targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = {
reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型
...
tapDismissed: true,
autoDeletedTime: 300,
}
``` ```
\ No newline at end of file
# security子系统ChangeLog # security子系统ChangeLog
## cl.security.1 ParamsSpec属性名变更为algName。 ## cl.security.1 ParamsSpec属性名变更为algName。
结构体ParamsSpec的属性algoName由于API命名统一,名称更改为algName。 结构体ParamsSpec的属性algoName由于API命名统一,名称更改为algName。
**变更影响** **变更影响**
影响已发布的JS接口,对ParamsSpec以及其子类IvParamsSpec,GcmParamsSpec与CcmParamsSpec,使用这些对象作为参数或返回值时,其属性名需要更改为algName。 影响已发布的JS接口,对ParamsSpec以及其子类IvParamsSpec,GcmParamsSpec与CcmParamsSpec,使用这些对象作为参数或返回值时,其属性名需要更改为algName。
应用需要进行适配,才可以在新版本SDK环境正常编译通过。 应用需要进行适配,才可以在新版本SDK环境正常编译通过。
**关键的接口/组件变更** **关键的接口/组件变更**
修改前的接口原型: 修改前的接口原型:
```ts ```ts
interface ParamsSpec { interface ParamsSpec {
/** /**
* Indicates the algorithm name. Should be set before initialization of a cipher object. * Indicates the algorithm name. Should be set before initialization of a cipher object.
* @type { string } * @type { string }
* @syscap SystemCapability.Security.CryptoFramework * @syscap SystemCapability.Security.CryptoFramework
* @since 9 * @since 9
*/ */
algoName : string; algoName : string;
} }
``` ```
修改后的接口原型: 修改后的接口原型:
```ts ```ts
interface ParamsSpec { interface ParamsSpec {
/** /**
* Indicates the algorithm name. Should be set before initialization of a cipher object. * Indicates the algorithm name. Should be set before initialization of a cipher object.
* @type { string } * @type { string }
* @syscap SystemCapability.Security.CryptoFramework * @syscap SystemCapability.Security.CryptoFramework
* @since 9 * @since 9
*/ */
algName : string; algName : string;
} }
``` ```
**适配指导** **适配指导**
对ParamsSpec以及其子类IvParamsSpec,GcmParamsSpec与CcmParamsSpec,使用这些对象作为参数或返回值时,其属性名需要从algoName更改为algName。 对ParamsSpec以及其子类IvParamsSpec,GcmParamsSpec与CcmParamsSpec,使用这些对象作为参数或返回值时,其属性名需要从algoName更改为algName。
```ts ```ts
function genGcmParamsSpec() { function genGcmParamsSpec() {
let arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0 , 0, 0]; // 12 bytes let arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0 , 0, 0]; // 12 bytes
let dataIv = new Uint8Array(arr); let dataIv = new Uint8Array(arr);
let ivBlob = {data : dataIv}; let ivBlob = {data : dataIv};
arr = [0, 0, 0, 0 , 0, 0, 0, 0]; // 8 bytes arr = [0, 0, 0, 0 , 0, 0, 0, 0]; // 8 bytes
let dataAad = new Uint8Array(arr); let dataAad = new Uint8Array(arr);
let aadBlob = {data : dataAad}; let aadBlob = {data : dataAad};
arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0]; // 16 bytes arr = [0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0]; // 16 bytes
let dataTag = new Uint8Array(arr); let dataTag = new Uint8Array(arr);
let tagBlob = {data : dataTag}; let tagBlob = {data : dataTag};
let gcmParamsSpec = {iv : ivBlob, aad : aadBlob, authTag : tagBlob, algName : "GcmParamsSpec"}; let gcmParamsSpec = {iv : ivBlob, aad : aadBlob, authTag : tagBlob, algName : "GcmParamsSpec"};
return gcmParamsSpec; return gcmParamsSpec;
} }
``` ```
详细查看API参考中ParamsSpec对应的接口适配指南: 详细查看API参考中ParamsSpec对应的接口适配指南:
[加解密算法库框架-ParamsSpec-API参考](../../../application-dev/reference/apis/js-apis-cryptoFramework.md#paramsspec) [加解密算法库框架-ParamsSpec-API参考](../../../application-dev/reference/apis/js-apis-cryptoFramework.md#paramsspec)
## cl.security.2 ECC密码算法的参数名从ECC512变更为ECC521 ## cl.security.2 ECC密码算法的参数名从ECC512变更为ECC521
**变更影响** **变更影响**
影响已发布的JS接口,接口行为发生变更。 影响已发布的JS接口,接口行为发生变更。
应用需要进行适配,才可以在新版本SDK环境获取正确结果。 应用需要进行适配,才可以在新版本SDK环境获取正确结果。
**关键的接口/组件变更** **关键的接口/组件变更**
发布的JS接口不变, 传入接口的参数发生变化,由ECC512变化为ECC521,具体可见[加解密算法库框架-ECC密码算法参数参考](../../../application-dev/security/cryptoFramework-overview.md#密钥生成规格),涉及的接口有: 发布的JS接口不变, 传入接口的参数发生变化,由ECC512变化为ECC521,具体可见[加解密算法库框架-ECC密码算法参数参考](../../../application-dev/security/cryptoFramework-overview.md#密钥生成规格),涉及的接口有:
cryptoFramework.createAsyKeyGenerator cryptoFramework.createAsyKeyGenerator
cryptoFramework.createSign cryptoFramework.createSign
cryptoFramework.createVerify cryptoFramework.createVerify
cryptoFramework.createKeyAgreement cryptoFramework.createKeyAgreement
**适配指导** **适配指导**
```js ```js
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC521"); let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC521");
``` ```
\ No newline at end of file
# 泛sensor子系统ChangeLog # 泛sensor子系统ChangeLog
## cl.ability.1 Sensor接口中venderName属性名称变更,更改为vendorName。 ## cl.ability.1 Sensor接口中venderName属性名称变更,更改为vendorName。
venderName为错别字,更正为vendorName。 venderName为错别字,更正为vendorName。
**变更影响** **变更影响**
该venderName属性无法再使用,请使用新增属性vendorName替换。 该venderName属性无法再使用,请使用新增属性vendorName替换。
**关键的接口/组件变更** **关键的接口/组件变更**
- 变更前: - 变更前:
```js ```js
interface Sensor { interface Sensor {
sensorName:string; /**< Sensor name */ sensorName:string; /**< Sensor name */
venderName:string; /**< Sensor vendor version */ venderName:string; /**< Sensor vendor version */
firmwareVersion:string; /**< Sensor firmware version */ firmwareVersion:string; /**< Sensor firmware version */
hardwareVersion:string; /**< Sensor hardware version */ hardwareVersion:string; /**< Sensor hardware version */
sensorId:number; /**< Sensor type ID, {@code SensorType} */ sensorId:number; /**< Sensor type ID, {@code SensorType} */
maxRange:number; /**< Maximum measurement range of the sensor */ maxRange:number; /**< Maximum measurement range of the sensor */
minSamplePeriod:number; /**< Minimum sample period allowed, in ns */ minSamplePeriod:number; /**< Minimum sample period allowed, in ns */
maxSamplePeriod:number; /**< maximum sample period allowed, in ns */ maxSamplePeriod:number; /**< maximum sample period allowed, in ns */
precision:number; /**< Sensor accuracy */ precision:number; /**< Sensor accuracy */
power:number; /**< Sensor power */ power:number; /**< Sensor power */
} }
``` ```
- 变更后: - 变更后:
```js ```js
interface Sensor { interface Sensor {
sensorName:string; /**< Sensor name */ sensorName:string; /**< Sensor name */
vendorName:string; /**< Sensor vendor version */ vendorName:string; /**< Sensor vendor version */
firmwareVersion:string; /**< Sensor firmware version */ firmwareVersion:string; /**< Sensor firmware version */
hardwareVersion:string; /**< Sensor hardware version */ hardwareVersion:string; /**< Sensor hardware version */
sensorId:number; /**< Sensor type ID, {@code SensorType} */ sensorId:number; /**< Sensor type ID, {@code SensorType} */
maxRange:number; /**< Maximum measurement range of the sensor */ maxRange:number; /**< Maximum measurement range of the sensor */
minSamplePeriod:number; /**< Minimum sample period allowed, in ns */ minSamplePeriod:number; /**< Minimum sample period allowed, in ns */
maxSamplePeriod:number; /**< maximum sample period allowed, in ns */ maxSamplePeriod:number; /**< maximum sample period allowed, in ns */
precision:number; /**< Sensor accuracy */ precision:number; /**< Sensor accuracy */
power:number; /**< Sensor power */ power:number; /**< Sensor power */
} }
``` ```
**适配指导** **适配指导**
该venderName属性删除无法再使用,请使用新增属性vendorName替换。 该venderName属性删除无法再使用,请使用新增属性vendorName替换。
\ No newline at end of file
# 启动子系统JS API变更ChangeLog # 启动子系统JS API变更ChangeLog
## cl.startup.1 包名变更 ## cl.startup.1 包名变更
**变更影响** **变更影响**
原有的@ohos.systemParameterV9包名将被删除无法再使用,需更换为新的@ohos.systemParameterEnhance包名。 原有的@ohos.systemParameterV9包名将被删除无法再使用,需更换为新的@ohos.systemParameterEnhance包名。
**适配指导** **适配指导**
原有的@ohos.systemParameterV9需要变更为@ohos.systemParameterEnhance,包内接口都不变,示例: 原有的@ohos.systemParameterV9需要变更为@ohos.systemParameterEnhance,包内接口都不变,示例:
```js ```js
import @ohos.systemParameterEnhance import @ohos.systemParameterEnhance
``` ```
# USB服务子系统ChangeLog # USB服务子系统ChangeLog
## cl.usb_manager.1 系统接口变更 ## cl.usb_manager.1 系统接口变更
USB系统API运行时鉴权,异步接口以Promise reject形式抛出错误码。 USB系统API运行时鉴权,异步接口以Promise reject形式抛出错误码。
基于此前版本开发的应用,需修改函数的返回值,否则会影响原有业务逻辑。 基于此前版本开发的应用,需修改函数的返回值,否则会影响原有业务逻辑。
**关键接口/组件变更** **关键接口/组件变更**
| 包名 | 旧接口 | 新接口 | | 包名 | 旧接口 | 新接口 |
| --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ohos.usbV9.d.ts | function setCurrentFunctions(funcs: FunctionType): Promise<boolean>; | function setCurrentFunctions(funcs: FunctionType): Promise<void>; | | ohos.usbV9.d.ts | function setCurrentFunctions(funcs: FunctionType): Promise<boolean>; | function setCurrentFunctions(funcs: FunctionType): Promise<void>; |
| ohos.usbV9.d.ts | function setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<boolean>; | function setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<void>; | | ohos.usbV9.d.ts | function setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<boolean>; | function setPortRoles(portId: number, powerRole: PowerRoleType, dataRole: DataRoleType): Promise<void>; |
## cl.usb_manager.2 sdk接口删除 ## cl.usb_manager.2 sdk接口删除
继OpenHarmony 4.0.5.5版本3.30之后,@ohos.usbV9.d.ts文件已删除。 继OpenHarmony 4.0.5.5版本3.30之后,@ohos.usbV9.d.ts文件已删除。
后续需要import @ohos.usbManager才能使用USB服务的接口: 后续需要import @ohos.usbManager才能使用USB服务的接口:
```ts ```ts
import usbManager from '@ohos.usbManager'; import usbManager from '@ohos.usbManager';
``` ```
**适配指导** **适配指导**
请参考各接口的[API文档](../../../application-dev/reference/apis/js-apis-usbManager.md) 请参考各接口的[API文档](../../../application-dev/reference/apis/js-apis-usbManager.md)
## cl.usb_manager.2 包名变更
基于此前版本开发的应用,需修改导入的包名,否则会影响原有业务逻辑。
**关键接口/组件变更**
| 旧包名 | 新包名 |
|------------------ | ------------------- |
| ohos.usbV9.d.ts | ohos.usbManager.d.ts |
**适配指导**
开发者导入时将@ohos.usbV9更换为@ohos.usbManager即可。
## cl.usb_manager.3 接口参数类型变更
基于此前版本开发的应用,需修改参数类型,否则会影响原有业务逻辑。
**关键接口/组件变更**
| 旧类名 | 新类名 |
|---------------| ------------- |
| interface USBConfig | interface USBConfiguration |
| 旧命名空间 | 新命名空间 |
|---------------| ------------- |
| @namespace usbV9 | @namespace usbManager |
| 包名 | 旧接口 | 新接口 |
| --------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ohos.usbManager.d.ts | function setConfiguration(pipe: USBDevicePipe, config: USBConfig): number; | function setConfiguration(pipe: USBDevicePipe, config: USBConfiguration): number; |
**适配指导**
调用setConfiguration接口时参数类型USBConfig修改为USBConfiguration即可。
## cl.usb_manager.4 sdk接口删除
基于此前版本开发的应用,需修改导入的包名,否则会影响原有业务逻辑。
**关键接口/组件变更**
@ohos.usbV9.d.ts文件已删除,由@ohos.usbManager.d.ts替代。
| 新包名 | 旧包名 | 已删除包名 |
| -------------------- | ------------- | --------------- |
| ohos.usbManager.d.ts | ohos.usb.d.ts | ohos.usbV9.d.ts |
后续需要import @ohos.usbManager才能使用USB服务的接口:
```ts
import usbManager from '@ohos.usbManager';
```
**适配指导**
请参考各接口的[API文档](../../../application-dev/reference/apis/js-apis-usbManager.md)
# web子系统ChangeLog # web子系统ChangeLog
OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变更如下。 OpenHarmony 4.0.2.1 版本相较于OpenHarmony 之前的版本,web的API变更如下。
## cl.web.1 HitTestTypeV9命名变更 ## cl.web.1 postMessageEvent参数类型变更
该接口postMessageEvent原先仅支持string类型,从4.0.2.1版本开始新增支持ArrayBuffer类型。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,原有功能不受影响。
**关键的接口/组件变更**
- 涉及接口
postMessageEvent(message: string): void
- 变更前:
```ts
postMessageEvent(message: string): void
```
- 变更后:
```ts
type WebMessage = ArrayBuffer | string
postMessageEvent(message: WebMessage): void
```
**适配指导**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,原有功能不受影响。
## cl.web.2 onMessageEvent参数类型变更
该接口onMessageEvent原先仅支持string类型,从4.0.2.1版本开始新增支持ArrayBuffer类型。
**变更影响**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,增加相应的逻辑处理,原有功能不受影响。
**关键的接口/组件变更**
- 涉及接口
onMessageEvent(callback: (result: string) => void): void
- 变更前:
```ts
onMessageEvent(callback: (result: string) => void): void
```
- 变更后:
```ts
type WebMessage = ArrayBuffer | string
onMessageEvent(callback: (result: WebMessage) => void): void
```
**适配指导**
该接口变更前向兼容,基于此前版本开发的应用可继续使用接口,增加相应的逻辑处理,原有功能不受影响。
## cl.web.3 删除webDebuggingAccess接口
该接口定义不合理,该属性对所有web实例生效的,属于全局配置。用本次新增的接口setWebDebuggingAccess替换。
**变更影响**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换。
**关键的接口/组件变更**
| 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- |
|WebAttribute | method | webDebugggingAccess(webDebugggingAccess: boolean): WebAttribute| 删除 |
**适配指导**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换。
## cl.web.4 新增setWebDebuggingAccess接口
WebviewController提供静态方法来设置调试模式开关,该设置对所有web实例生效。
**变更影响**
原有webDebugggingAccess属性定义不合理,因此新增该静态接口来设置调试模式开关。应用侧需要使用该接口来打开调试模式开关。
**关键的接口/组件变更**
| 类名 | 接口类型 | 接口声明 | 变更类型 |
| -- | -- | -- | -- |
|webview.WebviewController | method | static setWebDebugggingAccess(webDebugggingAccess: boolean): void| 新增 |
**适配指导**
以打开调试开关为例,示例代码如下:
```ts
// xxx.ets
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
aboutToAppear():void {
try {
web_webview.WebviewController.setWebDebuggingAccess(true);
} catch(error) {
console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
}
}
build() {
Column() {
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
## cl.web.5 HitTestTypeV9命名变更
枚举类HitTestTypeV9由于命名规范问题名称变更为WebHitTestType 枚举类HitTestTypeV9由于命名规范问题名称变更为WebHitTestType
**变更影响** **变更影响**
枚举类HitTestTypeV9,以及使用HitTestTypeV9作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。 枚举类HitTestTypeV9以及使用HitTestTypeV9作为参数或返回值的接口4.0.3.2版本及后续版本中无法继续正常使用
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -32,13 +155,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变 ...@@ -32,13 +155,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变
请使用WebHitTestType替换HitTestTypeV9。 请使用WebHitTestType替换HitTestTypeV9。
## cl.web.2 HeaderV9命名变更 ## cl.web.6 HeaderV9命名变更
结构体HeaderV9由于命名规范问题,名称变更为WebHeader。 结构体HeaderV9由于命名规范问题,名称变更为WebHeader。
**变更影响** **变更影响**
结构体HeaderV9,以及使用HeaderV9作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。 结构体HeaderV9,以及使用HeaderV9作为参数或返回值的接口,在4.0.3.2版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -62,13 +185,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变 ...@@ -62,13 +185,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变
请使用WebHeader替换HeaderV9。 请使用WebHeader替换HeaderV9。
## cl.web.3 HitTestValue结构体成员类型变更 ## cl.web.7 HitTestValue结构体成员类型变更
结构体HitTestValue中的成员变量HitTestTypeV9由于命名规范问题,名称变更为WebHitTestType。 结构体HitTestValue中的成员变量HitTestTypeV9由于命名规范问题,名称变更为WebHitTestType。
**变更影响** **变更影响**
结构体HitTestValue,以及使用HitTestValue作为参数或返回值的接口,在3.2.10.7版本及后续版本中无法继续正常使用。 结构体HitTestValue,以及使用HitTestValue作为参数或返回值的接口,在4.0.3.2版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -122,13 +245,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变 ...@@ -122,13 +245,13 @@ OpenHarmony 3.2.10.7 版本相较于OpenHarmony 之前的版本,web的API变
请使用WebHitTestType替换HitTestTypeV9。 请使用WebHitTestType替换HitTestTypeV9。
## cl.web.4 loadUrl参数类型变更 ## cl.web.8 loadUrl参数类型变更
loadUrl接口中的参数headers,由于其类型的命名规范问题,类型变更为WebHeader。 loadUrl接口中的参数headers,由于其类型的命名规范问题,类型变更为WebHeader。
**变更影响** **变更影响**
loadUrl接口若使用了headers参数,则在3.2.10.7版本及后续版本中无法继续正常使用。 loadUrl接口若使用了headers参数,则在4.0.3.2版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -152,13 +275,13 @@ loadUrl接口若使用了headers参数,则在3.2.10.7版本及后续版本中 ...@@ -152,13 +275,13 @@ loadUrl接口若使用了headers参数,则在3.2.10.7版本及后续版本中
在loadUrl中设置headers参数时,请使用WebHeader类型替换HeaderV9类型。 在loadUrl中设置headers参数时,请使用WebHeader类型替换HeaderV9类型。
## cl.web.5 getHitTest返回值类型变更 ## cl.web.9 getHitTest返回值类型变更
getHitTest接口中的返回值,由于其类型的命名规范问题,变更为WebHitTest。 getHitTest接口中的返回值,由于其类型的命名规范问题,变更为WebHitTest。
**变更影响** **变更影响**
getHitTest接口,在3.2.10.7版本及后续版本中无法继续正常使用。 getHitTest接口,在4.0.3.2版本及后续版本中无法继续正常使用。
**关键的接口/组件变更** **关键的接口/组件变更**
...@@ -182,7 +305,7 @@ getHitTest接口,在3.2.10.7版本及后续版本中无法继续正常使用 ...@@ -182,7 +305,7 @@ getHitTest接口,在3.2.10.7版本及后续版本中无法继续正常使用
在使用getHitTest接口的返回值时,请使用WebHitTestType类型替换HitTestTypeV9类型。 在使用getHitTest接口的返回值时,请使用WebHitTestType类型替换HitTestTypeV9类型。
## cl.web.6 WebMessagePort类迁移 ## cl.web.10 WebMessagePort类迁移
WebMessagePort类迁移至@ohos.web.webview.d.ts,并新增错误码抛出。 WebMessagePort类迁移至@ohos.web.webview.d.ts,并新增错误码抛出。
...@@ -219,7 +342,7 @@ WebMessagePort类迁移至@ohos.web.webview.d.ts,并新增错误码抛出。 ...@@ -219,7 +342,7 @@ WebMessagePort类迁移至@ohos.web.webview.d.ts,并新增错误码抛出。
import web_webview from '@ohos.web.webview'; import web_webview from '@ohos.web.webview';
``` ```
## cl.web.7 HitTestValue类迁移 ## cl.web.11 HitTestValue类迁移
HitTestValue类迁移至@ohos.web.webview.d.ts,HitTestValue类变更为接口,getType,getExtra变更为属性。 HitTestValue类迁移至@ohos.web.webview.d.ts,HitTestValue类变更为接口,getType,getExtra变更为属性。
...@@ -256,7 +379,7 @@ HitTestValue类迁移至@ohos.web.webview.d.ts,HitTestValue类变更为接口 ...@@ -256,7 +379,7 @@ HitTestValue类迁移至@ohos.web.webview.d.ts,HitTestValue类变更为接口
import web_webview from '@ohos.web.webview'; import web_webview from '@ohos.web.webview';
``` ```
## cl.web.8 WebCookie类下api9接口迁移 ## cl.web.12 WebCookie类下api9接口迁移
WebCookie类下api9接口迁移,WebCookie类下api9接口迁移到web.webview.webview.WebCookieManager。 WebCookie类下api9接口迁移,WebCookie类下api9接口迁移到web.webview.webview.WebCookieManager。
并新增接口错误码抛出。 并新增接口错误码抛出。
...@@ -320,7 +443,7 @@ WebCookie类下api9接口迁移,WebCookie类下api9接口迁移到web.webview. ...@@ -320,7 +443,7 @@ WebCookie类下api9接口迁移,WebCookie类下api9接口迁移到web.webview.
import web_webview from '@ohos.web.webview'; import web_webview from '@ohos.web.webview';
``` ```
## cl.web.9 WebController类下api9接口迁移 ## cl.web.13 WebController类下api9接口迁移
WebController类下api9接口迁移至web.webview.webview.WebviewController,并新增接口错误码抛出。 WebController类下api9接口迁移至web.webview.webview.WebviewController,并新增接口错误码抛出。
...@@ -400,7 +523,7 @@ getDefaultUserAgent接口更名为getUserAgent。 ...@@ -400,7 +523,7 @@ getDefaultUserAgent接口更名为getUserAgent。
import web_webview from '@ohos.web.webview'; import web_webview from '@ohos.web.webview';
``` ```
## cl.web.10 WebAsyncController类迁移 ## cl.web.14 WebAsyncController类迁移
WebAsyncController类下接口迁移至web.webview.webview.WebviewController,并新增接口错误码抛出。 WebAsyncController类下接口迁移至web.webview.webview.WebviewController,并新增接口错误码抛出。
...@@ -466,63 +589,33 @@ WebAsyncController类下接口迁移至web.webview.webview.WebviewController, ...@@ -466,63 +589,33 @@ WebAsyncController类下接口迁移至web.webview.webview.WebviewController,
} }
``` ```
## cl.web.11 删除webDebuggingAccess接口
该接口定义不合理,该属性对所有web实例生效的,属于全局配置。用本次新增的接口setWebDebuggingAccess替换。 ## cl.web.15 createWebMessagePorts接口参数
由于WebMessagePort需要新增支持更多数据类型,因此在该接口增加一个可选参数来区分新老接口。
**变更影响** **变更影响**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换 无,可选参数,可前向兼容
**关键的接口/组件变更** **关键的接口/组件变更**
| 类名 | 接口类型 | 接口声明 | 变更类型 | - 涉及接口
| -- | -- | -- | -- |
|WebAttribute | method | webDebugggingAccess(webDebugggingAccess: boolean): WebAttribute| 删除 |
**适配指导**
该接口删除无法再使用,请使用新增的接口setWebDebuggingAccess替换。
## cl.web.12 新增setWebDebuggingAccess接口
WebviewController提供静态方法来设置调试模式开关,该设置对所有web实例生效。 createWebMessagePorts(): Array<WebMessagePort>;
**变更影响** - 变更前:
原有webDebugggingAccess属性定义不合理,因此新增该静态接口来设置调试模式开关。应用侧需要使用该接口来打开调试模式开关。 ```ts
createWebMessagePorts(): Array<WebMessagePort>;
```
**关键的接口/组件变更** - 变更后:
| 类名 | 接口类型 | 接口声明 | 变更类型 | ```ts
| -- | -- | -- | -- | createWebMessagePorts(isExtentionType?: boolean): Array<WebMessagePort>;
|webview.WebviewController | method | static setWebDebugggingAccess(webDebugggingAccess: boolean): void| 新增 | ```
**适配指导** **适配指导**
以打开调试开关为例,示例代码如下: 已有应用无需适配。
\ No newline at end of file
```ts
// xxx.ets
import web_webview from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
aboutToAppear():void {
try {
web_webview.WebviewController.setWebDebuggingAccess(true);
} catch(error) {
console.error(`ErrorCode: ${error.code}, Message: ${error.message}`);
}
}
build() {
Column() {
Web({ src: 'www.example.com', controller: this.controller })
}
}
}
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册