1# Ability Subsystem Changelog
2
3Compared with OpenHarmony 3.2 Beta4, OpenHarmony 3.2.10.1(MR) has the following API changes in the ability subsystem:
4
5## cl.ability.1 API Migration
6The **requestPermissionsFromUser** API of **UIAbilityContext** is migrated from the ability subsystem to the security subsystem.
7
8Previously, the permission popup was implemented based on **UIAbility**, which used the **startAbilityForResult** API of **UIAbilityContext** to return the permission authorization result to the caller. Therefore, **requestPermissionsFromUser** was temporarily placed in **UIAbilityContext**. The permission popup is now implemented based on **ServiceExtensionAbility**, which no longer requires **startAbilityForResult** of **UIAbilityContext**. Therefore, **requestPermissionsFromUser** is migrated to the security subsystem.
9
10You need to adapt your application.
11
12**Change Impact**
13
14JS APIs in API version 9 are affected. Your application needs to adapt these APIs so that it can properly implement features in the SDK environment of the new version.
15
16**Key API/Component Changes**
17
18| Module                   | Class               | Method/Attribute/Enum/Constant                                         | Change Type|
19| ------------------------- | ------------------- | ------------------------------------------------------------ | -------- |
20| application/UIAbilityContext        | UIAbilityContext        | requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>): void; | Deleted    |
21| application/UIAbilityContext        | UIAbilityContext        | requestPermissionsFromUser(permissions: Array<string>): Promise<PermissionRequestResult>; | Deleted    |
22| @ohos.abilityAccessCtrl        | AtManager         | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void; | Added    |
23| @ohos.abilityAccessCtrl        | AtManager         | requestPermissionsFromUser(context: Context, permissions: Array<Permissions>) : Promise<PermissionRequestResult>; | Added    |
24
25
26**Adaptation Guide**
27
28The following illustrates how **requestPermissionsFromUser** is called to show a permission popup.
29
30Stage model:
31
32```ts
33import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts';
34// onWindowStageCreate lifecycle of UIAbility.
35onWindowStageCreate() {
36    let AtManager = abilityAccessCtrl.createAtManager();
37    // requestPermissionsFromUser determines whether to display a popup based on the permission authorization status.
38    AtManager.requestPermissionsFromUser(this.context, ["ohos.permission.MANAGE_DISPOSED_APP_STATUS"]).then((data) => {
39        console.log("data type:" + typeof(data));
40        console.log("data:" + data);
41        console.log("data permissions:" + data.permissions);
42        console.log("data result:" + data.authResults);
43    }).catch((err) => {
44        console.error('Failed to start ability', err.code);
45    })
46}
47```
48
49
50
51## cl.ability.2 Deletion of Deprecated APIs in API Version 9
52
53In the [Ability Exception Rectification](../OpenHarmony_3.2.8.3/changelogs-ability.md) document, some APIs in API version 9 have been marked as deprecated. According to API specifications of OpenHarmony, these APIs should be deleted.
54
55**Change Impact**
56
57The application developed based on earlier versions needs to use new APIs to replace the deleted ones. Otherwise, the application compilation will be affected.
58
59**Key API/Component Changes**
60
61API files are deleted.
62
63| Deleted API                                     | New API                                         |
64| ----------------------------------------------- | ----------------------------------------------- |
65| @ohos.application.Ability.d.ts                  | @ohos.app.ability.UIAbility.d.ts                |
66| @ohos.application.AbilityConstant.d.ts          | @ohos.app.ability.AbilityConstant.d.ts          |
67| @ohos.application.AbilityLifecycleCallback.d.ts | @ohos.app.ability.AbilityLifecycleCallback.d.ts |
68| @ohos.application.AbilityStage.d.ts             | @ohos.app.ability.AbilityStage.d.ts             |
69| @ohos.application.EnvironmentCallback.d.ts      | @ohos.app.ability.EnvironmentCallback.d.ts      |
70| @ohos.application.ExtensionAbility.d.ts         | @ohos.app.ability.ExtensionAbility.d.ts         |
71| @ohos.application.FormExtension.d.ts            | @ohos.app.form.FormExtensionAbility.d.ts        |
72| @ohos.application.ServiceExtensionAbility.d.ts  | @ohos.app.ability.ServiceExtensionAbility.d.ts  |
73| @ohos.application.StartOptions.d.ts             | @ohos.app.ability.StartOptions.d.ts             |
74| @ohos.application.context.d.ts                  | @ohos.app.ability.common.d.ts                   |
75| @ohos.application.errorManager.d.ts             | @ohos.app.ability.errorManager.d.ts             |
76
77APIs or attributes are deleted:
78
79- @ohos.application.Configuration.d.ts
80  - **direction**, **screenDensity**, **displayId**, and **hasPointerDevice** of **Configuration** are deleted. Use **Configuration** of **@ohos.app.ability.Configuration.d.ts**.
81- @ohos.application.ConfigurationConstant.d.ts
82  - **Direction** and **ScreenDensity** are deleted. Use **Direction** and **ScreenDensity** of **@ohos.app.ability.ConfigurationConstant.d.ts**.
83- @ohos.application.abilityManager.d.ts
84  - **getExtensionRunningInfos** and **getTopAbility** are deleted. Use the APIs with the same name in **@ohos.app.ability.abilityManager.d.ts**.
85- @ohos.application.appManager.d.ts
86  - **ApplicationState** and **ProcessState** are deleted. Use **ApplicationState** and **ProcessState** of **@ohos.app.ability.appManager.d.ts**.
87  - **registerApplicationStateObserver** and **getProcessRunningInformation** are deleted. Use the APIs with the same name in **@ohos.app.ability.appManager.d.ts**.
88- @ohos.application.formHost.d.ts
89  - **shareForm** and **notifyFormsPrivacyProtected** are deleted. Use the APIs with the same name in **@ohos.app.form.formHost.d.ts**.
90- @ohos.application.formInfo.d.ts
91  - **eTS** of **FormType** is deleted. Use **eTS** of **FormType** in **@ohos.app.form.formInfo.d.ts**.
92  - **IDENTITY_KEY**, **BUNDLE_NAME_KEY**, **ABILITY_NAME_KEY**, and **DEVICE_ID_KEY** of **FormParam** are deleted. Use the enums with the same name in **@ohos.app.form.formInfo.d.ts**.
93  - **FormInfoFilter** is deleted. Use **FormInfoFilter** of **@ohos.app.form.formInfo.d.ts**.
94  - **FormDimension** is deleted. Use **FormDimension** of **@ohos.app.form.formInfo.d.ts**.
95  - **VisibilityType** is deleted. Use **VisibilityType** of **@ohos.app.form.formInfo.d.ts**.
96- @ohos.wantAgent.d.ts
97  - **trigger** and **getOperationType** are deleted. Use the APIs with the same name in **@ohos.app.ability.wantAgent.d.ts**.
98- application/ApplicationContext.d.ts
99  - **registerAbilityLifecycleCallback**, **unregisterAbilityLifecycleCallback**, **registerEnvironmentCallback**, and **unregisterEnvironmentCallback** are deleted. Use **on** and **off**.
100- application/ServiceExtensionContext.d.ts
101  - **connectAbility**, **connectAbilityWithAccount**, and **disconnectAbility** are deleted. Use **connectServiceExtensionAbility**, **connectServiceExtensionAbilityWithAccount**, and **disconnectServiceExtensionAbility**.
102- @ohos.application.FormExtension.d.ts
103  - **onCreate**, **onCastToNormal**, **onUpdate**, **onVisibilityChange**, **onEvent**, **onDestroy**, **onAcquireFormState**, and **onShare** are deleted. Use the following lifecycle methods of **@ohos.app.form.FormExtensionAbility.d.ts**: **onAddForm**, **onCastToNormalForm**, **onUpdateForm**, **onChangeFormVisibility**, **onFormEvent**, **onRemoveForm**, **onAcquireFormState**, and **onShareForm**.
104- @ohos.application.abilityDelegatorRegistry.d.ts
105  - **AbilityDelegator**, **AbilityDelegatorArgs**, **AbilityMonitor**, and **ShellCmdResult** are deleted. Use the classes with the same name in **@ohos.app.ability.abilityDelegatorRegistry.d.ts**.
106- @ohos.application.abilityManager.d.ts
107  - **AbilityRunningInfo** and **ExtensionRunningInfo** are deleted. Use the classes with the same name in **@ohos.app.ability.abilityManager.d.ts**.
108- @ohos.application.appManager.d.ts
109  - **AbilityStateData**, **AppStateData**, **ApplicationStateObserver**, **ProcessRunningInfo**, and **ProcessRunningInformation** are deleted. Use the classes with the same name in **@ohos.app.ability.appManager.d.ts**.
110- @ohos.application.missionManager.d.ts
111  - **MissionInfo**, **MissionListener**, and **MissionSnapshot** are deleted. Use the classes with the same name in **@ohos.app.ability.missionManager.d.ts**.
112- @ohos.wantAgent.d.ts
113  - **TriggerInfo** and **WantAgentInfo** are deleted. Use the classes with the same name in **@ohos.app.ability.wantAgent.d.ts**.
114
115
116
117
118
119**Adaptation Guide**
120
121As mentioned above, only several APIs have their names changed in terms of, for example, the registration callbacks (**registerAbilityLifecycleCallback**, **unregisterAbilityLifecycleCallback**, **registerEnvironmentCallback**, and **unregisterEnvironmentCallback**) and connection and disconnection **ServiceExtensionAbility** (**connectAbility**, **connectAbilityWithAccount**, and **disconnectAbility**). For such APIs, replace their names with those of their corresponding new APIs in the lifecycle callbacks.
122
123Most APIs are moved to the new namespace. Therefore, you can modify **import** for adaptation.
124
125For example, the original API uses **@ohos.application.Ability**:
126
127```js
128import Ability from '@ohos.application.Ability';
129```
130
131You can directly modify **import** to switch to the new namespace:
132
133```js
134import Ability from '@ohos.app.ability.UIAbility';
135```
136
137In addition, exception handling is needed. For details, see the API reference for the new APIs.
138