1# @ohos.app.ability.quickFixManager (quickFixManager) (System API)
2
3The **quickFixManager** module provides APIs for quick fix. With quick fix, you can fix bugs in your application by applying patches, which is more efficient than by updating the entire application.
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8> The APIs of this module are system APIs and cannot be called by third-party applications.
9
10## Modules to Import
11
12```ts
13import { quickFixManager } from '@kit.AbilityKit';
14```
15
16## HapModuleQuickFixInfo
17
18Defines the quick fix information at the HAP file level.
19
20**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
21
22**System API**: This is a system API and cannot be called by third-party applications.
23
24| Name       | Type                | Read-only| Mandatory| Description                                                        |
25| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
26| moduleName    | string               | Yes|  Yes  | Name of the HAP file.                              |
27| originHapHash    | string            | Yes| Yes  | Hash value of the HAP file.                              |
28| quickFixFilePath    | string         | Yes| Yes  | Installation path of the quick fix patch file.                              |
29
30## ApplicationQuickFixInfo
31
32Defines the quick fix information at the application level.
33
34**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
35
36**System API**: This is a system API and cannot be called by third-party applications.
37
38| Name       | Type                | Read-only| Mandatory| Description                                                        |
39| ----------- | -------------------- | ---- | ---- | ------------------------------------------------------------ |
40| bundleName    | string               | Yes| Yes  | Bundle name.                      |
41| bundleVersionCode    | number        | Yes| Yes  | Internal version number of the application.                              |
42| bundleVersionName    | string        | Yes| Yes  | Version number of the application that is shown to users.                              |
43| quickFixVersionCode    | number      | Yes| Yes  | Version code of the quick fix patch package.                              |
44| quickFixVersionName    | string      | Yes| Yes  | Text description of the version number of the quick fix patch package.                              |
45| hapModuleQuickFixInfo    | Array\<[HapModuleQuickFixInfo](#hapmodulequickfixinfo)>   | Yes| Yes  | Quick fix information at the HAP file level.    |
46
47## quickFixManager.applyQuickFix
48
49applyQuickFix(hapModuleQuickFixFiles: Array\<string>, callback: AsyncCallback\<void>): void;
50
51Applies a quick fix patch. This API uses an asynchronous callback to return the result.
52
53**Required permissions**: ohos.permission.INSTALL_BUNDLE
54
55**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
56
57**System API**: This is a system API and cannot be called by third-party applications.
58
59**Parameters**
60
61  | Parameter| Type| Mandatory| Description|
62  | -------- | -------- | -------- | -------- |
63  | hapModuleQuickFixFiles | Array\<string> | Yes| Quick fix patch files, each of which must contain a valid file path.|
64  | callback | AsyncCallback\<void> | Yes| Callback used to return the result. If the quick fix patch is installed, **err** is **undefined**. Otherwise, **err** is an error object.|
65
66**Error codes**
67
68If an error occurs during patch installation, the error code and message are returned through the common event [COMMON_EVENT_QUICK_FIX_APPLY_RESULT](../apis-basic-services-kit/common_event/commonEvent-definitions.md#common_event_quick_fix_apply_result9).
69
70For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
71
72| ID| Error Message|
73| ------- | -------- |
74| 201      | Permission denied. |
75| 202      | Not system application. |
76| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
77| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
78| 18500008 | Internal error. |
79
80> **NOTE**
81>
82> The file path passed in the API must be an application sandbox path. For details about how to obtain the sandbox path, see [Obtaining the Sandbox Path](js-apis-bundle-BundleInstaller-sys.md#obtaining-the-sandbox-path). The path mapped to the device is **/proc/<*applicationProcessId*>/root/*sandboxPath***.
83
84**Example**
85
86```ts
87import { quickFixManager } from '@kit.AbilityKit';
88
89try {
90  let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
91  quickFixManager.applyQuickFix(hapModuleQuickFixFiles, (error) => {
92    if (error) {
93      console.error( `applyQuickFix failed with error: ${error}`);
94    } else {
95      console.info( 'applyQuickFix success');
96    }
97  });
98} catch (paramError) {
99  console.error(`error.code: ${paramError.code}, error.message: ${paramError.message}`);
100}
101```
102
103## quickFixManager.applyQuickFix
104
105applyQuickFix(hapModuleQuickFixFiles: Array\<string>): Promise\<void>;
106
107Applies a quick fix patch. This API uses a promise to return the result.
108
109**Required permissions**: ohos.permission.INSTALL_BUNDLE
110
111**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
112
113**System API**: This is a system API and cannot be called by third-party applications.
114
115**Parameters**
116
117  | Parameter| Type| Mandatory| Description|
118  | -------- | -------- | -------- | -------- |
119  | hapModuleQuickFixFiles | Array\<string> | Yes| Quick fix patch files, each of which must contain a valid file path.|
120
121**Return value**
122
123  | Type| Description|
124  | -------- | -------- |
125  | Promise\<void> | Promise that returns no value.|
126
127**Error codes**
128
129If an error occurs during patch installation, the error code and message are returned through the common event [COMMON_EVENT_QUICK_FIX_APPLY_RESULT](../apis-basic-services-kit/common_event/commonEvent-definitions.md#common_event_quick_fix_apply_result9).
130
131For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
132
133| ID| Error Message|
134| ------- | -------- |
135| 201      | Permission denied. |
136| 202      | Not system application. |
137| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
138| 18500002 | The specified quick fix is invalid. It may not exist or inaccessible. |
139| 18500008 | Internal error. |
140
141**Example**
142
143```ts
144import { quickFixManager } from '@kit.AbilityKit';
145import { BusinessError } from '@kit.BasicServicesKit';
146
147let hapModuleQuickFixFiles = ['/data/storage/el2/base/entry.hqf'];
148
149try {
150  quickFixManager.applyQuickFix(hapModuleQuickFixFiles).then(() => {
151    console.info('applyQuickFix success');
152  }).catch((error: BusinessError) => {
153    console.error(`applyQuickFix err: ${error}`);
154  });
155} catch (paramError) {
156  console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
157}
158```
159
160## quickFixManager.getApplicationQuickFixInfo
161
162getApplicationQuickFixInfo(bundleName: string, callback: AsyncCallback\<ApplicationQuickFixInfo>): void;
163
164Obtains the quick fix information of the application. This API uses an asynchronous callback to return the result.
165
166**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
167
168**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
169
170**System API**: This is a system API and cannot be called by third-party applications.
171
172**Parameters**
173
174| Parameter| Type| Mandatory| Description|
175| -------- | -------- | -------- | -------- |
176| bundleName | string | Yes|Bundle name. |
177| callback | AsyncCallback\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | Yes| Callback used to return the quick fix information.|
178
179**Error codes**
180
181For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
182
183| ID| Error Message|
184| ------- | -------- |
185| 201      | Permission denied. |
186| 202      | Not system application. |
187| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
188| 18500001 | The bundle does not exist or no patch has been applied. |
189| 18500008 | Internal error. |
190
191**Example**
192
193```ts
194import { quickFixManager } from '@kit.AbilityKit';
195import { BusinessError } from '@kit.BasicServicesKit';
196
197try {
198  let bundleName = 'bundleName';
199  quickFixManager.getApplicationQuickFixInfo(bundleName, (error, data) => {
200    if (error) {
201      console.error(`getApplicationQuickFixInfo error: ${error}`);
202    } else {
203      console.info(`getApplicationQuickFixInfo success: ${data}`);
204    }
205  });
206} catch (paramError) {
207  console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
208}
209```
210
211## quickFixManager.getApplicationQuickFixInfo
212
213getApplicationQuickFixInfo(bundleName: string): Promise\<ApplicationQuickFixInfo>;
214
215Obtains the quick fix information of the application. This API uses a promise to return the result.
216
217**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED
218
219**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
220
221**System API**: This is a system API and cannot be called by third-party applications.
222
223**Parameters**
224
225| Parameter| Type| Mandatory| Description|
226| -------- | -------- | -------- | -------- |
227| bundleName | string | Yes| Bundle name.|
228
229**Return value**
230
231  | Type| Description|
232  | -------- | -------- |
233  | Promise\<[ApplicationQuickFixInfo](#applicationquickfixinfo)> | Promise used to return the quick fix information.|
234
235**Error codes**
236
237For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
238
239| ID| Error Message|
240| ------- | -------- |
241| 201      | Permission denied. |
242| 202      | Not system application. |
243| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
244| 18500001 | The bundle does not exist or no patch has been applied. |
245| 18500008 | Internal error. |
246
247**Example**
248
249```ts
250import { quickFixManager } from '@kit.AbilityKit';
251import { BusinessError } from '@kit.BasicServicesKit';
252
253try {
254  let bundleName = 'bundleName';
255  quickFixManager.getApplicationQuickFixInfo(bundleName).then((data) => {
256    console.info(`getApplicationQuickFixInfo success: ${data}`);
257  }).catch((error: BusinessError) => {
258    console.error(`getApplicationQuickFixInfo err: ${error}`);
259  });
260} catch (paramError) {
261  console.error(`error: ${(paramError as BusinessError).code}, ${(paramError as BusinessError).message}`);
262}
263```
264
265## quickFixManager.revokeQuickFix<sup>10+<sup>
266
267revokeQuickFix(bundleName: string, callback: AsyncCallback\<void>): void;
268
269Revokes quick fix. This API uses an asynchronous callback to return the result.
270
271**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED and ohos.permission.INSTALL_BUNDLE
272
273**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
274
275**System API**: This is a system API and cannot be called by third-party applications.
276
277**Parameters**
278
279  | Parameter| Type| Mandatory| Description|
280  | -------- | -------- | -------- | -------- |
281  | bundleName | string | Yes| Name of the bundle for which the patch needs to be revoked.|
282  | callback | AsyncCallback\<void> | Yes| Callback used to return the result. If quick fix is revoked, **err** is **undefined**. Otherwise, **err** is an error object.|
283
284**Error codes**
285
286For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
287
288| ID| Error Message|
289| ------- | -------- |
290| 201      | Permission denied. |
291| 202      | Not system application. |
292| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
293| 18500001 | The bundle does not exist or no patch has been applied. |
294| 18500009 | The application has an ongoing quick fix task. |
295
296If an error occurs during patch installation, the error code and message are returned through the common event [COMMON_EVENT_QUICK_FIX_REVOKE_RESULT](../apis-basic-services-kit/common_event/commonEventManager-definitions.md#common_event_quick_fix_revoke_result10).
297
298**Example**
299
300```ts
301import { quickFixManager } from '@kit.AbilityKit';
302
303let bundleName = "com.example.myapplication";
304
305quickFixManager.revokeQuickFix(bundleName, (err) => {
306  console.info("revokeQuickFix " + bundleName + " " + JSON.stringify(err));
307});
308```
309
310## quickFixManager.revokeQuickFix<sup>10+<sup>
311
312revokeQuickFix(bundleName: string): Promise\<void>;
313
314Revokes quick fix. This API uses a promise to return the result.
315
316**Required permissions**: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED and ohos.permission.INSTALL_BUNDLE
317
318**System capability**: SystemCapability.Ability.AbilityRuntime.QuickFix
319
320**System API**: This is a system API and cannot be called by third-party applications.
321
322**Parameters**
323
324  | Parameter| Type| Mandatory| Description|
325  | -------- | -------- | -------- | -------- |
326  | bundleName | string | Yes| Name of the bundle for which the patch needs to be revoked.|
327
328**Return value**
329
330  | Type| Description|
331  | -------- | -------- |
332  | Promise\<void> | Promise that returns no value.|
333
334**Error codes**
335
336For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Ability Error Codes](errorcode-ability.md).
337
338| ID| Error Message|
339| ------- | -------- |
340| 201      | Permission denied. |
341| 202      | Not system application. |
342| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
343| 18500001 | The bundle does not exist or no patch has been applied. |
344| 18500009 | The application has an ongoing quick fix task. |
345
346If an error occurs during patch installation, the error code and message are returned through the common event [COMMON_EVENT_QUICK_FIX_REVOKE_RESULT](../apis-basic-services-kit/common_event/commonEventManager-definitions.md#common_event_quick_fix_revoke_result10). The table below lists the possible error codes and messages.
347
348**Example**
349
350```ts
351import { quickFixManager } from '@kit.AbilityKit';
352import { BusinessError } from '@kit.BasicServicesKit';
353
354let bundleName = "com.example.myapplication";
355
356quickFixManager.revokeQuickFix(bundleName).then(() => {
357  console.info("revokeQuickFix " + bundleName +" ok");
358}).catch((err: BusinessError) => {
359  console.info("revokeQuickFix " + bundleName +" failed, error code is ", JSON.stringify((err)));
360});
361```
362