• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 元能力子系统JS API变更Changelog
2
3## cl.ability.1 接口迁移
4ability子系统UIAbilityContext的接口requestPermissionsFromUser迁移到security子系统:
5
6之前权限弹窗应用是基于UIAbility实现的,需要借助于UIAbilityContext的startAbilityForResult接口把授权结果带回给调用方,故把requestPermissionsFromUser接口暂时放在UIAbilityContext中。现在权限弹窗应用切换为基于ServiceExtensionAbility实现,不再需要借助UIAbilityContext的startAbilityForResult接口,因此把requestPermissionsFromUser接口迁移到security子系统。
7
8开发者需要根据以下说明对应用进行适配。
9
10 **变更影响**
11
12影响API9版本的JS接口,应用需要进行适配才可以在新版本SDK环境正常实现功能。
13
14**关键的接口/组件变更**
15
16| 模块名                    | 类名                | 方法/属性/枚举/常量                                          | 变更类型 |
17| ------------------------- | ------------------- | ------------------------------------------------------------ | -------- |
18| application/UIAbilityContext        | UIAbilityContext        | requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>): void; | 删除     |
19| application/UIAbilityContext        | UIAbilityContext        | requestPermissionsFromUser(permissions: Array<string>): Promise<PermissionRequestResult>; | 删除     |
20| @ohos.abilityAccessCtrl        | AtManager         | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; | 新增     |
21| @ohos.abilityAccessCtrl        | AtManager         | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>) : Promise<PermissionRequestResult>; | 新增     |
22
23
24**适配指导**
25
26应用中调用requestPermissionsFromUser拉起权限弹窗应用可参考下列代码
27
28Stage模型下的示例:
29
30```ts
31import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts';
32//UIAbility的onWindowStageCreate生命周期
33onWindowStageCreate() {
34    let AtManager = abilityAccessCtrl.createAtManager();
35    //requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
36    AtManager.requestPermissionsFromUser(this.context, ["ohos.permission.MANAGE_DISPOSED_APP_STATUS"]).then((data) => {
37        console.log("data type:" + typeof(data));
38        console.log("data:" + data);
39        console.log("data permissions:" + data.permissions);
40        console.log("data result:" + data.authResults);
41    }).catch((err) => {
42        console.error('Failed to start ability', err.code);
43    })
44}
45```
46
47
48
49## cl.ability.2 删除标记为废弃的API9接口
50
51[元能力异常处理整改](../OpenHarmony_3.2.8.3/changelogs-ability.md)将部分API9接口标记为了废弃,根据OpenHarmony接口规范,需要删除标记为废弃的API9接口。
52
53**变更影响**
54
55基于此前版本开发的应用,需要将被删除的接口替换为新接口,否则会影响应用编译。
56
57**关键接口/组件变更**
58
59接口文件被删除:
60
61| 被删除接口                                      | 新接口                                          |
62| ----------------------------------------------- | ----------------------------------------------- |
63| @ohos.application.Ability.d.ts                  | @ohos.app.ability.UIAbility.d.ts                |
64| @ohos.application.AbilityConstant.d.ts          | @ohos.app.ability.AbilityConstant.d.ts          |
65| @ohos.application.AbilityLifecycleCallback.d.ts | @ohos.app.ability.AbilityLifecycleCallback.d.ts |
66| @ohos.application.AbilityStage.d.ts             | @ohos.app.ability.AbilityStage.d.ts             |
67| @ohos.application.EnvironmentCallback.d.ts      | @ohos.app.ability.EnvironmentCallback.d.ts      |
68| @ohos.application.ExtensionAbility.d.ts         | @ohos.app.ability.ExtensionAbility.d.ts         |
69| @ohos.application.FormExtension.d.ts            | @ohos.app.form.FormExtensionAbility.d.ts        |
70| @ohos.application.ServiceExtensionAbility.d.ts  | @ohos.app.ability.ServiceExtensionAbility.d.ts  |
71| @ohos.application.StartOptions.d.ts             | @ohos.app.ability.StartOptions.d.ts             |
72| @ohos.application.context.d.ts                  | @ohos.app.ability.common.d.ts                   |
73| @ohos.application.errorManager.d.ts             | @ohos.app.ability.errorManager.d.ts             |
74
75接口、属性被删除:
76
77- @ohos.application.Configuration.d.ts
78  - Configuration 的 direction、screenDensity、displayId、hasPointerDevice 被删除。可以使用 @ohos.app.ability.Configuration.d.ts 的 Configuration替换。
79- @ohos.application.ConfigurationConstant.d.ts
80  - 枚举 Direction 和 ScreenDensity 被删除。可以使用 @ohos.app.ability.ConfigurationConstant.d.ts 的枚举 Direction 和 ScreenDensity 替换。
81- @ohos.application.abilityManager.d.ts
82  - 方法 getExtensionRunningInfos 和 getTopAbility 被删除。可以使用 @ohos.app.ability.abilityManager.d.ts 的同名方法替换。
83- @ohos.application.appManager.d.ts
84  - 枚举 ApplicationState 和 ProcessState 被删除。可以使用 @ohos.app.ability.appManager.d.ts 的枚举 ApplicationState 和 ProcessState 替换。
85  - 方法 registerApplicationStateObserver 和 getProcessRunningInformation被删除。可以使用 @ohos.app.ability.appManager.d.ts 的同名方法替换。
86- @ohos.application.formHost.d.ts
87  - 方法 shareForm 和 notifyFormsPrivacyProtected 被删除。可以使用 @ohos.app.form.formHost.d.ts 的同名方法替换。
88- @ohos.application.formInfo.d.ts
89  - 枚举 FormType 的 eTS 被删除,可以使用 @ohos.app.form.formInfo.d.ts 的 FormType 中的 eTS 替换。
90  - 枚举 FormParam 的 IDENTITY_KEY、BUNDLE_NAME_KEY、ABILITY_NAME_KEY、DEVICE_ID_KEY 被删除,可以使用  @ohos.app.form.formInfo.d.ts 的 FormParam 中的同名枚举替换。
91  - 接口 FormInfoFilter 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormInfoFilter 替换。
92  - 枚举 FormDimension 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 FormDimension 替换。
93  - 枚举 VisibilityType 被删除。可以使用 @ohos.app.form.formInfo.d.ts 的 VisibilityType 替换。
94- @ohos.wantAgent.d.ts
95  - 方法 trigger 和 getOperationType 被删除。可以使用 @ohos.app.ability.wantAgent.d.ts 的同名方法替换。
96- application/ApplicationContext.d.ts
97  - 方法 registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback 被删除。可以使用 on、off 替换。
98- application/ServiceExtensionContext.d.ts
99  - 方法 connectAbility、connectAbilityWithAccount、disconnectAbility 被删除。可以使用 connectServiceExtensionAbility、connectServiceExtensionAbilityWithAccount、disconnectServiceExtensionAbility 替换。
100- @ohos.application.FormExtension.d.ts
101  - 生命周期onCreate、onCastToNormal、onUpdate、onVisibilityChange、onEvent、onDestroy、onAcquireFormState、onShare 被删除。可以使用@ohos.app.form.FormExtensionAbility.d.ts的onAddForm、onCastToNormalForm、onUpdateForm、onChangeFormVisibility、onFormEvent、onRemoveForm、onAcquireFormState、onShareForm
102- @ohos.application.abilityDelegatorRegistry.d.ts
103  - 导出类 AbilityDelegator、AbilityDelegatorArgs、AbilityMonitor、ShellCmdResult 被删除。可以使用@ohos.app.ability.abilityDelegatorRegistry.d.ts中的同名导出类替换。
104- @ohos.application.abilityManager.d.ts
105  - 导出类 AbilityRunningInfo、ExtensionRunningInfo 被删除。可以使用@ohos.app.ability.abilityManager.d.ts中的同名导出类替换。
106- @ohos.application.appManager.d.ts
107  - 导出类 AbilityStateData、AppStateData、ApplicationStateObserver、ProcessRunningInfo、ProcessRunningInformation 被删除。可以使用@ohos.app.ability.appManager.d.ts中的同名导出类替换。
108- @ohos.application.missionManager.d.ts
109  - 导出类 MissionInfo、MissionListener、MissionSnapshot 被删除。可以使用@ohos.app.ability.missionManager.d.ts中的同名导出类替换。
110- @ohos.wantAgent.d.ts
111  - 导出类 TriggerInfo、WantAgentInfo 被删除。可以使用@ohos.app.ability.wantAgent.d.ts中的同名导出类替换。
112
113
114
115
116
117**适配指导**
118
119如上所述,仅少数接口修改了接口名的如注册回调函数(registerAbilityLifecycleCallback、unregisterAbilityLifecycleCallback、registerEnvironmentCallback、unregisterEnvironmentCallback)和连接断开 ServiceExtensionAbility(connectAbility、connectAbilityWithAccount、disconnectAbility),卡片生命周期等需要替换成新的接口名。
120
121绝大多数接口平移到了新的namespace中,所以可以通过修改import来解决适配问题:
122
123如原先接口使用了@ohos.application.Ability
124
125```js
126import Ability from '@ohos.application.Ability';
127```
128
129可以通过直接修改import,来切换到新的namespace上:
130
131```js
132import Ability from '@ohos.app.ability.UIAbility';
133```
134
135此外还需要适配异常处理,具体参考新接口的接口文档。
136
137## cl.ability.2 appRecovery接口中RestartFlag属性名称变更,删除了未支持的属性
138
139appRecovery接口中RestartFlag枚举命名从特定故障发生后**不重启**改成了特定故障发生后**重启**。
140删除了CPP_CRASH_NO_RESTART。
141
142**变更影响**
143
1443.2.10.6版本之前使用CPP_CRASH_NO_RESTART/JS_CRASH_NO_RESTART/APP_FREEZE_NO_RESTART类型开发的应用,在3.2.10.6版本之后行为会发生变化。
145
146**关键接口/组件变更**
147
148**RestartFlag** <sup>9+</sup>
149
150变更前:
151
152| 名称                  | 值     | 说明                             |
153| --------------------- | ------ | -------------------------------- |
154| ALWAYS_RESTART        | 0      | 总是重启应用。                   |
155| CPP_CRASH_NO_RESTART  | 0x0001 | 发生CPP_CRASH时**不重启**应用。  |
156| JS_CRASH_NO_RESTART   | 0x0002 | 发生JS_CRASH时**不重启**应用。   |
157| APP_FREEZE_NO_RESTART | 0x0004 | 发生APP_FREEZE时**不重启**应用。 |
158| NO_RESTART            | 0xFFFF | 总是不重启应用。                 |
159
160变更后:
161
162| 名称                    | 值     | 说明                           |
163| ----------------------- | ------ | ------------------------------ |
164| ALWAYS_RESTART          | 0      | 总是重启应用。                 |
165| CPP_CRASH_NO_RESTART    | NA     | **删除**,不支持该场景的重启。 |
166| RESTART_WHEN_JS_CRASH   | 0x0001 | 发生JS_CRASH时**重启**应用。   |
167| RESTART_WHEN_APP_FREEZE | 0x0002 | 发生APP_FREEZE时**重启**应用。 |
168| NO_RESTART              | 0xFFFF | 总是不重启应用。               |
169
170**适配指导**
171
172按新的语义进行适配。
173
174
175
176