• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { BundleInfo, AppCloneIdentity } from 'bundleManager.BundleInfo';
17import { AsyncCallback, BusinessError } from '@ohos.base';
18import { ApplicationInfo } from 'bundleManager.ApplicationInfo';
19import { AbilityInfo } from 'bundleManager.AbilityInfo';
20import { ExtensionAbilityInfo } from 'bundleManager.ExtensionAbilityInfo';
21import Want from '@ohos.app.ability.Want';
22
23namespace bundleManager {
24
25  loadLibrary("ani_bundle_manager.z");
26
27  const EMPTY_USER_ID: number = -500;
28
29  enum BundleFlag {
30    GET_BUNDLE_INFO_DEFAULT = 0x00000000,
31    GET_BUNDLE_INFO_WITH_APPLICATION = 0x00000001,
32    GET_BUNDLE_INFO_WITH_HAP_MODULE = 0x00000002,
33    GET_BUNDLE_INFO_WITH_ABILITY = 0x00000004,
34    GET_BUNDLE_INFO_WITH_EXTENSION_ABILITY = 0x00000008,
35    GET_BUNDLE_INFO_WITH_REQUESTED_PERMISSION = 0x00000010,
36    GET_BUNDLE_INFO_WITH_METADATA = 0x00000020,
37    GET_BUNDLE_INFO_WITH_DISABLE = 0x00000040,
38    GET_BUNDLE_INFO_WITH_SIGNATURE_INFO = 0x00000080,
39    GET_BUNDLE_INFO_WITH_MENU = 0x00000100,
40    GET_BUNDLE_INFO_WITH_ROUTER_MAP = 0x00000200,
41    GET_BUNDLE_INFO_WITH_SKILL = 0x00000800,
42    GET_BUNDLE_INFO_ONLY_WITH_LAUNCHER_ABILITY = 0x00001000,
43    GET_BUNDLE_INFO_OF_ANY_USER = 0x00002000,
44    GET_BUNDLE_INFO_EXCLUDE_CLONE = 0x00004000,
45    GET_BUNDLE_INFO_WITH_CLOUD_KIT = 0x00008000,
46  }
47
48  enum ApplicationFlag {
49    GET_APPLICATION_INFO_DEFAULT = 0x00000000,
50    GET_APPLICATION_INFO_WITH_PERMISSION = 0x00000001,
51    GET_APPLICATION_INFO_WITH_METADATA = 0x00000002,
52    GET_APPLICATION_INFO_WITH_DISABLE = 0x00000004
53  }
54
55  enum AbilityFlag {
56    GET_ABILITY_INFO_DEFAULT = 0x00000000,
57    GET_ABILITY_INFO_WITH_PERMISSION = 0x00000001,
58    GET_ABILITY_INFO_WITH_APPLICATION = 0x00000002,
59    GET_ABILITY_INFO_WITH_METADATA = 0x00000004,
60    GET_ABILITY_INFO_WITH_DISABLE = 0x00000008,
61    GET_ABILITY_INFO_ONLY_SYSTEM_APP = 0x00000010,
62    GET_ABILITY_INFO_WITH_APP_LINKING = 0x00000040,
63    GET_ABILITY_INFO_WITH_SKILL = 0x00000080,
64  }
65
66  enum ExtensionAbilityFlag {
67    GET_EXTENSION_ABILITY_INFO_DEFAULT = 0x00000000,
68    GET_EXTENSION_ABILITY_INFO_WITH_PERMISSION = 0x00000001,
69    GET_EXTENSION_ABILITY_INFO_WITH_APPLICATION = 0x00000002,
70    GET_EXTENSION_ABILITY_INFO_WITH_METADATA = 0x00000004,
71    GET_EXTENSION_ABILITY_INFO_WITH_SKILL = 0x00000010,
72  }
73
74  export enum ExtensionAbilityType {
75    FORM = 0,
76    WORK_SCHEDULER = 1,
77    INPUT_METHOD = 2,
78    SERVICE = 3,
79    ACCESSIBILITY = 4,
80    DATA_SHARE = 5,
81    FILE_SHARE = 6,
82    STATIC_SUBSCRIBER = 7,
83    WALLPAPER = 8,
84    BACKUP = 9,
85    WINDOW = 10,
86    ENTERPRISE_ADMIN = 11,
87    THUMBNAIL = 13,
88    PREVIEW = 14,
89    PRINT = 15,
90    SHARE = 16,
91    PUSH = 17,
92    DRIVER = 18,
93    ACTION = 19,
94    ADS_SERVICE = 20,
95    EMBEDDED_UI = 21,
96    INSIGHT_INTENT_UI = 22,
97    FENCE = 24,
98    CALLER_INFO_QUERY = 25,
99    ASSET_ACCELERATION = 26,
100    FORM_EDIT = 27,
101    DISTRIBUTED = 28,
102    APP_SERVICE = 29,
103    LIVE_FORM = 30,
104    UNSPECIFIED = 255
105  }
106
107  export enum PermissionGrantState {
108    PERMISSION_DENIED = -1,
109    PERMISSION_GRANTED = 0
110  }
111
112  export enum SupportWindowMode {
113    FULL_SCREEN = 0,
114    SPLIT = 1,
115    FLOATING = 2
116  }
117
118  export enum LaunchType {
119    SINGLETON = 0,
120    MULTITON = 1,
121    SPECIFIED = 2
122  }
123
124  export enum DisplayOrientation {
125    UNSPECIFIED,
126    LANDSCAPE,
127    PORTRAIT,
128    FOLLOW_RECENT,
129    LANDSCAPE_INVERTED,
130    PORTRAIT_INVERTED,
131    AUTO_ROTATION,
132    AUTO_ROTATION_LANDSCAPE,
133    AUTO_ROTATION_PORTRAIT,
134    AUTO_ROTATION_RESTRICTED,
135    AUTO_ROTATION_LANDSCAPE_RESTRICTED,
136    AUTO_ROTATION_PORTRAIT_RESTRICTED,
137    LOCKED,
138    AUTO_ROTATION_UNSPECIFIED,
139    FOLLOW_DESKTOP
140  }
141
142  export enum ModuleType {
143    ENTRY = 1,
144    FEATURE = 2,
145    SHARED = 3
146  }
147
148  export enum BundleType {
149    APP = 0,
150    ATOMIC_SERVICE = 1
151  }
152
153  export enum CompatiblePolicy {
154    BACKWARD_COMPATIBILITY = 1
155  }
156
157  export enum ProfileType {
158    INTENT_PROFILE = 1
159  }
160
161  export enum AppDistributionType {
162    APP_GALLERY = 1,
163    ENTERPRISE = 2,
164    ENTERPRISE_NORMAL = 3,
165    ENTERPRISE_MDM = 4,
166    OS_INTEGRATION = 5,
167    CROWDTESTING = 6,
168    NONE = 7
169  }
170
171  export enum MultiAppModeType {
172    UNSPECIFIED = 0,
173    MULTI_INSTANCE = 1,
174    APP_CLONE = 2,
175  }
176
177  export enum ApplicationInfoFlag {
178    FLAG_INSTALLED = 0x00000001,
179    FLAG_OTHER_INSTALLED = 0x00000010,
180    FLAG_PREINSTALLED_APP = 0x00000020,
181    FLAG_PREINSTALLED_APP_UPDATE = 0x00000040,
182  }
183
184  export native function getBundleInfoForSelfNative(bundleFlags: number, isSync: boolean): BundleInfo;
185
186  export native function getBundleInfoNative(bundleName: string, bundleFlags: number, userId: number, isSync: boolean) : BundleInfo;
187
188  export native function getApplicationInfoNative(bundleName: string, applicationFlags: number, userId: number, isSync: boolean): ApplicationInfo;
189
190  export native function getAllBundleInfoNative(bundleFlags: number, userId: number): Array<BundleInfo>;
191
192  export native function getAllApplicationInfoNative(appFlags: number, userId: number): Array<ApplicationInfo>;
193
194  export native function isApplicationEnabledNative(bundleName: string, appIndex: number, isSync: boolean): boolean;
195
196  export native function queryAbilityInfoSyncNative(want: Want, abilityFlags: number, userId: number, isSync: boolean): Array<AbilityInfo>;
197
198  export native function getAppCloneIdentityNative(uid: number): AppCloneIdentity;
199
200  export native function getAbilityLabelNative(bundleName: string, moduleName: string, abilityName: string, isSync: boolean): string;
201
202  export native function getLaunchWantForBundleNative(bundleName: string, userId: number, isSync: boolean): Want;
203
204  export native function getAppCloneBundleInfoNative(bundleName: string, appIndex: number,
205    bundleFlags: number, userId: number): BundleInfo;
206
207  export native function getSpecifiedDistributionType(bundleName: string): string;
208
209  export native function getBundleNameByUidNative(uid: number, isSync: boolean): string;
210
211  export native function isAbilityEnabledNative(info: AbilityInfo, appIndex: number, isSync: boolean): boolean;
212
213  export native function setAbilityEnabledNative(info: AbilityInfo, isEnabled: boolean, appIndex: number, isSync: boolean): void;
214
215  export native function setApplicationEnabledNative(bundleName: string, isEnabled: boolean, appIndex: number, isSync: boolean): void;
216
217  export native function getDynamicIconNative(bundleName: string): string;
218
219  export native function queryAbilityInfoWithWantsNative(wants: Array<Want>, abilityFlags: number,
220    userId: number): Array<AbilityInfo>;
221
222  export native function queryExtensionAbilityInfoNative(want: Want, extensionAbilityType: ExtensionAbilityType,
223    extensionAbilityTypeName: string, extensionAbilityFlags: number,
224    userId: number, isExtensionTypeName: boolean, isSync: boolean): Array<ExtensionAbilityInfo>;
225
226  export native function queryExAbilityInfoSyncWithoutWantNative(extensionAbilityType: string, extensionAbilityFlags: number,
227    userId: number): Array<ExtensionAbilityInfo>;
228
229  export native function enableDynamicIconNative(bundleName: string, moduleName: string): void;
230
231  function getBundleInfoForSelfSync(bundleFlags: number): BundleInfo {
232    return bundleManager.getBundleInfoForSelfNative(bundleFlags, true);
233  }
234
235  function getAbilityLabelSync(bundleName: string, moduleName: string, abilityName: string): string {
236    return bundleManager.getAbilityLabelNative(bundleName, moduleName, abilityName, true);
237  }
238
239  function getBundleNameByUidSync(uid: number): string {
240    return bundleManager.getBundleNameByUidNative(uid, true);
241  }
242
243  function isApplicationEnabledSync(bundleName: string): boolean {
244    return bundleManager.isApplicationEnabledNative(bundleName, 0, true);
245  }
246
247  function queryAbilityInfoSync(want: Want, abilityFlags: number, userId?: number): Array<AbilityInfo> {
248    let userIdInfo: number = userId ?? EMPTY_USER_ID;
249    return bundleManager.queryAbilityInfoSyncNative(want, abilityFlags, userIdInfo, true);
250  }
251
252  function getLaunchWantForBundleSync(bundleName: string, userId?: number): Want {
253    let userIdInfo: number = userId ?? EMPTY_USER_ID;
254    return bundleManager.getLaunchWantForBundleNative(bundleName, userIdInfo, true);
255  }
256
257  function isAbilityEnabledSync(info: AbilityInfo): boolean {
258    return bundleManager.isAbilityEnabledNative(info, 0, true);
259  }
260
261  function setAbilityEnabledSync(info: AbilityInfo, isEnabled: boolean): void {
262    return bundleManager.setAbilityEnabledNative(info, isEnabled, 0, true);
263  }
264
265  function setApplicationEnabledSync(bundleName: string, isEnabled: boolean): void {
266    return bundleManager.setApplicationEnabledNative(bundleName, isEnabled, 0, true);
267  }
268
269  function queryExtensionAbilityInfoSync(want: Want, extensionAbilityType: ExtensionAbilityType,
270    extensionAbilityFlags: number, userId?: number): Array<ExtensionAbilityInfo> {
271    let userIdInfo: number = userId ?? EMPTY_USER_ID;
272    return bundleManager.queryExtensionAbilityInfoNative(
273      want, extensionAbilityType, "", extensionAbilityFlags, userIdInfo, false, true);
274  }
275
276  function queryExtensionAbilityInfoSync(want: Want, extensionAbilityType: string, extensionAbilityFlags: number,
277    userId?: number): Array<ExtensionAbilityInfo> {
278    let userIdInfo: number = userId ?? EMPTY_USER_ID;
279    return bundleManager.queryExtensionAbilityInfoNative(
280      want, ExtensionAbilityType.UNSPECIFIED, extensionAbilityType, extensionAbilityFlags, userIdInfo, true, true);
281  }
282
283  function queryExtensionAbilityInfoSync(extensionAbilityType: string, extensionAbilityFlags: number,
284    userId?: number): Array<ExtensionAbilityInfo> {
285    let userIdInfo: number = userId ?? EMPTY_USER_ID;
286    return bundleManager.queryExAbilityInfoSyncWithoutWantNative(extensionAbilityType, extensionAbilityFlags, userIdInfo);
287  }
288
289  function getBundleInfoForSelf(bundleFlags: number, callback: AsyncCallback<BundleInfo>): void {
290    let execFun = (): BundleInfo => {
291      return bundleManager.getBundleInfoForSelfNative(bundleFlags, false);
292    };
293    let p1 = taskpool.execute(execFun);
294    p1.then((e: NullishType) => {
295      let resultBundleInfo: BundleInfo = e as BundleInfo;
296      callback(null, resultBundleInfo);
297    }, (err: Error): void => {
298      callback(err as BusinessError, undefined);
299    });
300  }
301
302  function getBundleInfoForSelf(bundleFlags: number):Promise<BundleInfo> {
303    let p = new Promise<BundleInfo>((resolve: (bundleInfo: BundleInfo) => void, reject: (error: BusinessError) => void) => {
304      let execFun = (): BundleInfo => {
305        return bundleManager.getBundleInfoForSelfNative(bundleFlags, false);
306      };
307      let p1 = taskpool.execute(execFun);
308        p1.then((e: NullishType) => {
309          let resultBundleInfo: BundleInfo = e as BundleInfo;
310          resolve(resultBundleInfo);
311        }, (err: Error): void => {
312          reject(err as BusinessError);
313        });
314    }
315    );
316    return p;
317  }
318
319  function getBundleInfoSync(bundleName: string, bundleFlags: number, userId: number): BundleInfo {
320    return bundleManager.getBundleInfoNative(bundleName, bundleFlags, userId, true);
321  }
322
323  function getBundleInfoSync(bundleName: string, bundleFlags: number): BundleInfo {
324    return bundleManager.getBundleInfoNative(bundleName, bundleFlags, EMPTY_USER_ID, true);
325  }
326
327  function getBundleInfo(bundleName: string, bundleFlags: number, userId?: number): Promise<BundleInfo> {
328    let p = new Promise<BundleInfo>((resolve: (bundleInfo: BundleInfo) => void, reject: (error: BusinessError) => void) => {
329      let userIdInfo: number = userId ?? EMPTY_USER_ID;
330      let execFun = (): BundleInfo => {
331        return bundleManager.getBundleInfoNative(bundleName, bundleFlags, userIdInfo, false);
332      };
333      let p1 = taskpool.execute(execFun);
334      p1.then((e: NullishType) => {
335        let resultBundleInfo: BundleInfo = e as BundleInfo;
336        resolve(resultBundleInfo);
337      }, (err: Error): void => {
338        reject(err as BusinessError);
339      });
340    }
341    );
342    return p;
343  }
344
345  function getBundleInfo(bundleName: string, bundleFlags: number, callback: AsyncCallback<BundleInfo>): void {
346    let execFun = (): BundleInfo => {
347      return bundleManager.getBundleInfoNative(bundleName, bundleFlags, EMPTY_USER_ID, false);
348    };
349    let p1 = taskpool.execute(execFun);
350    p1.then((e: NullishType) => {
351      let resultBundleInfo: BundleInfo = e as BundleInfo;
352      callback(null, resultBundleInfo);
353    },(err: Error): void => {
354      callback(err as BusinessError, undefined);
355    });
356  }
357
358  function getBundleInfo(bundleName: string, bundleFlags: number, userId: number, callback: AsyncCallback<BundleInfo>): void {
359    let execFun = (): BundleInfo => {
360      return bundleManager.getBundleInfoNative(bundleName, bundleFlags, userId, false);
361    };
362    let p1 = taskpool.execute(execFun);
363    p1.then((e: NullishType) => {
364      let resultBundleInfo: BundleInfo = e as BundleInfo;
365      callback(null, resultBundleInfo);
366    },(err: Error): void => {
367      callback(err as BusinessError, undefined);
368    });
369  }
370
371  function getApplicationInfoSync(bundleName: string, applicationFlags: number): ApplicationInfo {
372    return bundleManager.getApplicationInfoNative(bundleName, applicationFlags, EMPTY_USER_ID, true);
373  }
374
375  function getApplicationInfoSync(bundleName: string, applicationFlags: number, userId: number): ApplicationInfo {
376    return bundleManager.getApplicationInfoNative(bundleName, applicationFlags, userId, true);
377  }
378
379  function getAllBundleInfo(bundleFlags: number, userId?: number): Promise<Array<BundleInfo>> {
380    let p = new Promise<Array<BundleInfo>>((resolve: (bundleInfos: Array<BundleInfo>)
381      => void, reject: (error: BusinessError) => void) => {
382      let userIdInfo: number = userId ?? EMPTY_USER_ID;
383      let execFun = (): Array<BundleInfo> => {
384        return bundleManager.getAllBundleInfoNative(bundleFlags, userIdInfo);
385      };
386      let p1 = taskpool.execute(execFun);
387      p1.then((e: NullishType) => {
388        let resultBundleInfos: Array<BundleInfo> = e as Array<BundleInfo>;
389        resolve(resultBundleInfos);
390      }, (err: Error): void => {
391        reject(err as BusinessError);
392      });
393    }
394    );
395    return p;
396  }
397
398  function getAllBundleInfo(bundleFlags: number, callback: AsyncCallback<Array<BundleInfo>>): void {
399    let execFun = (): Array<BundleInfo> => {
400      return bundleManager.getAllBundleInfoNative(bundleFlags, EMPTY_USER_ID);
401    };
402    let p1 = taskpool.execute(execFun);
403    p1.then((e: NullishType) => {
404      let resultBundleInfos: Array<BundleInfo> = e as Array<BundleInfo>;
405      callback(null, resultBundleInfos);
406    }, (err: Error): void => {
407      callback(err as BusinessError, undefined);
408    });
409  }
410
411  function getAllBundleInfo(bundleFlags: number, userId: number, callback: AsyncCallback<Array<BundleInfo>>): void {
412    let execFun = (): Array<BundleInfo> => {
413      return bundleManager.getAllBundleInfoNative(bundleFlags, userId);
414    };
415    let p1 = taskpool.execute(execFun);
416    p1.then((e: NullishType) => {
417      let resultBundleInfos: Array<BundleInfo> = e as Array<BundleInfo>;
418      callback(null, resultBundleInfos);
419    }, (err: Error): void => {
420      callback(err as BusinessError, undefined);
421    });
422  }
423
424  function getAllApplicationInfo(appFlags: number, userId?: number): Promise<Array<ApplicationInfo>> {
425    let p = new Promise<Array<ApplicationInfo>>((resolve: (applicationInfos: Array<ApplicationInfo>)
426      => void, reject: (error: BusinessError) => void) => {
427      let userIdInfo: number = userId ?? EMPTY_USER_ID;
428      let execFun = (): Array<ApplicationInfo> => {
429        return bundleManager.getAllApplicationInfoNative(appFlags, userIdInfo);
430      };
431      let p1 = taskpool.execute(execFun);
432      p1.then((e: NullishType) => {
433        let resultApplicationInfos: Array<ApplicationInfo> = e as Array<ApplicationInfo>;
434        resolve(resultApplicationInfos);
435      }, (err: Error): void => {
436        reject(err as BusinessError);
437      });
438    }
439    );
440    return p;
441  }
442
443  function getAllApplicationInfo(appFlags: number, callback: AsyncCallback<Array<ApplicationInfo>>): void {
444    let execFun = (): Array<ApplicationInfo> => {
445      return bundleManager.getAllApplicationInfoNative(appFlags, EMPTY_USER_ID);
446    };
447    let p1 = taskpool.execute(execFun);
448    p1.then((e: NullishType) => {
449      let resultApplicationInfos: Array<ApplicationInfo> = e as Array<ApplicationInfo>;
450      callback(null, resultApplicationInfos);
451    }, (err: Error): void => {
452      callback(err as BusinessError, undefined);
453    });
454  }
455
456  function getAllApplicationInfo(appFlags: number, userId: number,
457    callback: AsyncCallback<Array<ApplicationInfo>>): void {
458    let execFun = (): Array<ApplicationInfo> => {
459      return bundleManager.getAllApplicationInfoNative(appFlags, userId);
460    };
461    let p1 = taskpool.execute(execFun);
462    p1.then((e: NullishType) => {
463      let resultApplicationInfos: Array<ApplicationInfo> = e as Array<ApplicationInfo>;
464      callback(null, resultApplicationInfos);
465    }, (err: Error): void => {
466      callback(err as BusinessError, undefined);
467    });
468  }
469
470  function isApplicationEnabled(bundleName: string, appIndex: number): Promise<boolean> {
471    let p = new Promise<boolean>((resolve: (isEnabled: boolean) => void, reject: (error: BusinessError) => void) => {
472      let execFun = (): boolean => {
473        return bundleManager.isApplicationEnabledNative(bundleName, appIndex, false);
474      };
475      let p1 = taskpool.execute(execFun);
476      p1.then((e: NullishType) => {
477        let isEnabled: boolean = e as boolean;
478        resolve(isEnabled);
479      }, (err: Error): void => {
480        reject(err as BusinessError);
481      });
482    }
483    );
484    return p;
485  }
486
487  function isApplicationEnabled(bundleName: string): Promise<boolean> {
488    let p = new Promise<boolean>((resolve: (isEnabled: boolean) => void, reject: (error: BusinessError) => void) => {
489      let execFun = (): boolean => {
490        return bundleManager.isApplicationEnabledNative(bundleName, 0, false);
491      };
492      let p1 = taskpool.execute(execFun);
493      p1.then((e: NullishType) => {
494        let isEnabled: boolean = e as boolean;
495        resolve(isEnabled);
496      }, (err: Error): void => {
497        reject(err as BusinessError);
498      });
499    }
500    );
501    return p;
502  }
503
504  function isApplicationEnabled(bundleName: string, callback: AsyncCallback<boolean>): void {
505    let execFun = (): boolean => {
506      return bundleManager.isApplicationEnabledNative(bundleName, 0, false);
507    };
508    let p1 = taskpool.execute(execFun);
509    p1.then((e: NullishType) => {
510      let isEnabled: boolean = e as boolean;
511      callback(null, isEnabled);
512    }, (err: Error): void => {
513      callback(err as BusinessError, undefined);
514    });
515  }
516
517  function queryAbilityInfo(want: Want, abilityFlags: number, userId?: number): Promise<Array<AbilityInfo>> {
518    let p = new Promise<Array<AbilityInfo>>((resolve: (abilityInfos: Array<AbilityInfo>)
519      => void, reject: (error: BusinessError) => void) => {
520        let userIdInfo: number = userId ?? EMPTY_USER_ID;
521      let execFun = (): Array<AbilityInfo> => {
522        return bundleManager.queryAbilityInfoSyncNative(want, abilityFlags, userIdInfo, false);
523      };
524      let p1 = taskpool.execute(execFun);
525      p1.then((e: NullishType) => {
526        let resultAbilityInfos: Array<AbilityInfo> = e as Array<AbilityInfo>;
527        resolve(resultAbilityInfos);
528      }, (err: Error): void => {
529        reject(err as BusinessError);
530      });
531    }
532    );
533    return p;
534  }
535
536  function queryAbilityInfo(want: Want, abilityFlags: number, callback: AsyncCallback<Array<AbilityInfo>>): void {
537    let execFun = (): Array<AbilityInfo> => {
538      return bundleManager.queryAbilityInfoSyncNative(want, abilityFlags, EMPTY_USER_ID, false);
539    };
540    let p1 = taskpool.execute(execFun);
541    p1.then((e: NullishType) => {
542      let resultAbilityInfos: Array<AbilityInfo> = e as Array<AbilityInfo>;
543      callback(null, resultAbilityInfos);
544    }, (err: Error): void => {
545      callback(err as BusinessError, undefined);
546    });
547  }
548
549  function queryAbilityInfo(want: Want,
550    abilityFlags: number, userId: number, callback: AsyncCallback<Array<AbilityInfo>>): void {
551    let execFun = (): Array<AbilityInfo> => {
552      return bundleManager.queryAbilityInfoSyncNative(want, abilityFlags, userId, false);
553    };
554    let p1 = taskpool.execute(execFun);
555    p1.then((e: NullishType) => {
556      let resultAbilityInfos: Array<AbilityInfo> = e as Array<AbilityInfo>;
557      callback(null, resultAbilityInfos);
558    }, (err: Error): void => {
559      callback(err as BusinessError, undefined);
560    });
561  }
562
563  function getApplicationInfo(bundleName: string, appFlags: number, userId?: number): Promise<ApplicationInfo> {
564    let p = new Promise<ApplicationInfo>((
565      resolve: (applicationInfo: ApplicationInfo) => void, reject: (error: BusinessError) => void) => {
566      let userIdInfo: number = userId ?? EMPTY_USER_ID;
567      let execFun = (): ApplicationInfo => {
568        return bundleManager.getApplicationInfoNative(bundleName, appFlags, userIdInfo, false);
569      };
570      let p1 = taskpool.execute(execFun);
571      p1.then((e: NullishType) => {
572        let resultApplicationInfo: ApplicationInfo = e as ApplicationInfo;
573        resolve(resultApplicationInfo);
574      }, (err: Error): void => {
575        reject(err as BusinessError);
576      });
577    }
578    );
579    return p;
580  }
581
582  function getApplicationInfo(bundleName: string, appFlags: number, callback: AsyncCallback<ApplicationInfo>): void {
583    let execFun = (): ApplicationInfo => {
584      return bundleManager.getApplicationInfoNative(bundleName, appFlags, EMPTY_USER_ID, false);
585    };
586    let p1 = taskpool.execute(execFun);
587    p1.then((e: NullishType) => {
588      let resultApplicationInfo: ApplicationInfo = e as ApplicationInfo;
589      callback(null, resultApplicationInfo);
590    },(err: Error): void => {
591      callback(err as BusinessError, undefined);
592    });
593  }
594
595  function getApplicationInfo(bundleName: string,
596    appFlags: number, userId: number, callback: AsyncCallback<ApplicationInfo>): void {
597    let execFun = (): ApplicationInfo => {
598      return bundleManager.getApplicationInfoNative(bundleName, appFlags, userId, false);
599    };
600    let p1 = taskpool.execute(execFun);
601    p1.then((e: NullishType) => {
602      let resultApplicationInfo: ApplicationInfo = e as ApplicationInfo;
603      callback(null, resultApplicationInfo);
604    },(err: Error): void => {
605      callback(err as BusinessError, undefined);
606    });
607  }
608
609  function getAppCloneIdentity(uid: number): Promise<AppCloneIdentity> {
610    let p = new Promise<AppCloneIdentity>((
611      resolve: (appCloneIdentity: AppCloneIdentity) => void, reject: (error: BusinessError) => void) => {
612      let execFun = (): AppCloneIdentity => {
613        return bundleManager.getAppCloneIdentityNative(uid);
614      };
615      let p1 = taskpool.execute(execFun);
616      p1.then((e: NullishType) => {
617        let resultAppCloneIdentity: AppCloneIdentity = e as AppCloneIdentity;
618        resolve(resultAppCloneIdentity);
619      }, (err: Error): void => {
620        reject(err as BusinessError);
621      });
622    }
623    );
624    return p;
625  }
626
627  function getAbilityLabel(bundleName: string, moduleName: string, abilityName: string): Promise<string> {
628    let p = new Promise<string>((
629      resolve: (label: string) => void, reject: (error: BusinessError) => void) => {
630      let execFun = (): string => {
631        return bundleManager.getAbilityLabelNative(bundleName, moduleName, abilityName, false);
632      };
633      let p1 = taskpool.execute(execFun);
634      p1.then((e: NullishType) => {
635        let label: string = e as string;
636        resolve(label);
637      }, (err: Error): void => {
638        reject(err as BusinessError);
639      });
640    }
641    );
642    return p;
643  }
644
645  function getAbilityLabel(
646    bundleName: string, moduleName: string, abilityName: string, callback: AsyncCallback<string>): void {
647    let execFun = (): string => {
648      return bundleManager.getAbilityLabelNative(bundleName, moduleName, abilityName, false);
649    };
650    let p1 = taskpool.execute(execFun);
651    p1.then((e: NullishType) => {
652      let label: string = e as string;
653      callback(null, label);
654    },(err: Error): void => {
655      callback(err as BusinessError, undefined);
656    });
657  }
658
659  function getLaunchWantForBundle(bundleName: string, userId?: number): Promise<Want> {
660    let p = new Promise<Want>((
661      resolve: (want: Want) => void, reject: (error: BusinessError) => void) => {
662      let userIdInfo: number = userId ?? EMPTY_USER_ID;
663      let execFun = (): Want => {
664        return bundleManager.getLaunchWantForBundleNative(bundleName, userIdInfo, false);
665      };
666      let p1 = taskpool.execute(execFun);
667      p1.then((e: NullishType) => {
668        let want: Want = e as Want;
669        resolve(want);
670      }, (err: Error): void => {
671        reject(err as BusinessError);
672      });
673    }
674    );
675    return p;
676  }
677
678  function getLaunchWantForBundle(bundleName: string, userId: number, callback: AsyncCallback<Want>): void {
679    let execFun = (): Want => {
680      return bundleManager.getLaunchWantForBundleNative(bundleName, userId, false);
681    };
682    let p1 = taskpool.execute(execFun);
683    p1.then((e: NullishType) => {
684      let want: Want = e as Want;
685      callback(null, want);
686    },(err: Error): void => {
687      callback(err as BusinessError, undefined);
688    });
689  }
690
691  function getLaunchWantForBundle(bundleName: string, callback: AsyncCallback<Want>): void {
692    let execFun = (): Want => {
693      return bundleManager.getLaunchWantForBundleNative(bundleName, EMPTY_USER_ID, false);
694    };
695    let p1 = taskpool.execute(execFun);
696    p1.then((e: NullishType) => {
697      let want: Want = e as Want;
698      callback(null, want);
699    },(err: Error): void => {
700      callback(err as BusinessError, undefined);
701    });
702  }
703
704  function getAppCloneBundleInfo(bundleName: string, appIndex: number,
705    bundleFlags: number, userId?: number): Promise<BundleInfo> {
706    let p = new Promise<BundleInfo>((resolve: (bundleInfo: BundleInfo) => void,
707      reject: (error: BusinessError) => void) => {
708      let userIdInfo: number = userId ?? EMPTY_USER_ID;
709      let execFun = (): BundleInfo => {
710        return bundleManager.getAppCloneBundleInfoNative(bundleName, appIndex, bundleFlags, userIdInfo);
711      };
712      let p1 = taskpool.execute(execFun);
713      p1.then((e: NullishType) => {
714        let resultBundleInfo: BundleInfo = e as BundleInfo;
715        resolve(resultBundleInfo);
716      }, (err: Error): void => {
717        reject(err as BusinessError);
718      });
719    }
720    );
721    return p;
722  }
723
724  function getBundleNameByUid(uid: number, callback: AsyncCallback<string>): void {
725    let execFun = (): string => {
726      return bundleManager.getBundleNameByUidNative(uid, false);
727    };
728    let p1 = taskpool.execute(execFun);
729    p1.then((e: NullishType) => {
730      let result: string = e as string;
731      callback(null, result);
732    }).catch((err: Error): void => {
733      callback(err as BusinessError, undefined);
734    });
735  }
736
737  function getBundleNameByUid(uid: number): Promise<string> {
738    let p = new Promise<string>((resolve: (result: string) => void, reject: (error: BusinessError) => void) => {
739      let execFun = (): string => {
740        return bundleManager.getBundleNameByUidNative(uid, false);
741      };
742      let p1 = taskpool.execute(execFun);
743      p1.then((e: NullishType) => {
744        let result: string = e as string;
745        resolve(result);
746      }).catch((err: Error): void => {
747        reject(err as BusinessError);
748      });
749    }
750    );
751    return p;
752  }
753
754  function queryExtensionAbilityInfo(want: Want, extensionAbilityType: ExtensionAbilityType,
755    extensionAbilityFlags: number, callback: AsyncCallback<Array<ExtensionAbilityInfo>>): void {
756    let execFun = (): Array<ExtensionAbilityInfo> => {
757      return bundleManager.queryExtensionAbilityInfoNative(
758        want, extensionAbilityType, "", extensionAbilityFlags, EMPTY_USER_ID, false, false);
759    };
760    let p1 = taskpool.execute(execFun);
761    p1.then((e: NullishType) => {
762      let extensionAbilityInfos: Array<ExtensionAbilityInfo> = e as Array<ExtensionAbilityInfo>;
763      callback(null, extensionAbilityInfos);
764    },(err: Error): void => {
765      callback(err as BusinessError, undefined);
766    });
767  }
768
769  function queryExtensionAbilityInfo(want: Want, extensionAbilityType: ExtensionAbilityType,
770    extensionAbilityFlags: number, userId: number, callback: AsyncCallback<Array<ExtensionAbilityInfo>>): void {
771    let execFun = (): Array<ExtensionAbilityInfo> => {
772      return bundleManager.queryExtensionAbilityInfoNative(
773        want, extensionAbilityType, "", extensionAbilityFlags, userId, false, false);
774    };
775    let p1 = taskpool.execute(execFun);
776    p1.then((e: NullishType) => {
777      let extensionAbilityInfos: Array<ExtensionAbilityInfo> = e as Array<ExtensionAbilityInfo>;
778      callback(null, extensionAbilityInfos);
779    },(err: Error): void => {
780      callback(err as BusinessError, undefined);
781    });
782  }
783
784  function queryExtensionAbilityInfo(want: Want, extensionAbilityType: ExtensionAbilityType,
785    extensionAbilityFlags: number, userId?: number): Promise<Array<ExtensionAbilityInfo>> {
786    let p = new Promise<Array<ExtensionAbilityInfo>>((
787      resolve: (extensionAbilityInfos: Array<ExtensionAbilityInfo>) => void,
788      reject: (error: BusinessError) => void) => {
789      let userIdInfo: number = userId ?? EMPTY_USER_ID;
790      let execFun = (): Array<ExtensionAbilityInfo> => {
791        return bundleManager.queryExtensionAbilityInfoNative(
792          want, extensionAbilityType, "", extensionAbilityFlags, userIdInfo, false, false);
793      };
794      let p1 = taskpool.execute(execFun);
795      p1.then((e: NullishType) => {
796        let extensionAbilityInfos: Array<ExtensionAbilityInfo> = e as Array<ExtensionAbilityInfo>;
797        resolve(extensionAbilityInfos);
798      }, (err: Error): void => {
799        reject(err as BusinessError);
800      });
801    }
802    );
803    return p;
804  }
805
806  function isAbilityEnabled(info: AbilityInfo, appIndex: number): Promise<boolean> {
807    let p = new Promise<boolean>((resolve: (isEnabled: boolean) => void, reject: (error: BusinessError) => void) => {
808      let execFun = (): boolean => {
809        return bundleManager.isAbilityEnabledNative(info, appIndex, false);
810      };
811      let p1 = taskpool.execute(execFun);
812      p1.then((e: NullishType) => {
813        let isEnabled: boolean = e as boolean;
814        resolve(isEnabled);
815      }, (err: Error): void => {
816        reject(err as BusinessError);
817      });
818    }
819    );
820    return p;
821  }
822
823  function isAbilityEnabled(info: AbilityInfo): Promise<boolean> {
824    let p = new Promise<boolean>((resolve: (isEnabled: boolean) => void, reject: (error: BusinessError) => void) => {
825      let execFun = (): boolean => {
826        return bundleManager.isAbilityEnabledNative(info, 0, false);
827      };
828      let p1 = taskpool.execute(execFun);
829      p1.then((e: NullishType) => {
830        let isEnabled: boolean = e as boolean;
831        resolve(isEnabled);
832      }, (err: Error): void => {
833        reject(err as BusinessError);
834      });
835    }
836    );
837    return p;
838  }
839
840  function isAbilityEnabled(info: AbilityInfo, callback: AsyncCallback<boolean>): void {
841    let execFun = (): boolean => {
842      return bundleManager.isAbilityEnabledNative(info, 0, false);
843    };
844    let p1 = taskpool.execute(execFun);
845    p1.then((e: NullishType) => {
846      let isEnabled: boolean = e as boolean;
847      callback(null, isEnabled);
848    }, (err: Error): void => {
849      callback(err as BusinessError, undefined);
850    });
851  }
852
853  function setAbilityEnabled(info: AbilityInfo, appIndex: number, isEnabled: boolean): Promise<void> {
854    let p = new Promise<void>((resolve: (v:undefined) => void, reject: (error: BusinessError) => void) : void => {
855      let execFun = (): void => {
856        return bundleManager.setAbilityEnabledNative(info, isEnabled, appIndex, false);
857      };
858      let p1 = taskpool.execute(execFun);
859      p1.then((): void => {
860        resolve(undefined);
861      }, (err: Error): void => {
862        reject(err as BusinessError);
863      });
864    }
865    );
866    return p;
867  }
868
869  function setAbilityEnabled(info: AbilityInfo, isEnabled: boolean): Promise<void> {
870    let p = new Promise<void>((resolve: (v:undefined) => void, reject: (error: BusinessError) => void) : void => {
871      let execFun = (): void => {
872        return bundleManager.setAbilityEnabledNative(info, isEnabled, 0, false);
873      };
874      let p1 = taskpool.execute(execFun);
875      p1.then((): void => {
876        resolve(undefined);
877      }, (err: Error): void => {
878        reject(err as BusinessError);
879      });
880    }
881    );
882    return p;
883  }
884
885  function setAbilityEnabled(info: AbilityInfo, isEnabled: boolean, callback: AsyncCallback<void>): void {
886    let execFun = (): void => {
887      return bundleManager.setAbilityEnabledNative(info, isEnabled, 0, false);
888    };
889    let p1 = taskpool.execute(execFun);
890    p1.then(() => {
891      callback(null, undefined);
892    }, (err: Error): void => {
893      callback(err as BusinessError, undefined);
894    });
895  }
896
897  function setApplicationEnabled(bundleName: string, appIndex: number, isEnabled: boolean): Promise<void> {
898    let p = new Promise<void>((resolve: (v:undefined) => void, reject: (error: BusinessError) => void) : void => {
899      let execFun = (): void => {
900        return bundleManager.setApplicationEnabledNative(bundleName, isEnabled, appIndex, false);
901      };
902      let p1 = taskpool.execute(execFun);
903      p1.then((): void => {
904        resolve(undefined);
905      }, (err: Error): void => {
906        reject(err as BusinessError);
907      });
908    }
909    );
910    return p;
911  }
912
913  function setApplicationEnabled(bundleName: string, isEnabled: boolean): Promise<void> {
914    let p = new Promise<void>((resolve: (v:undefined) => void, reject: (error: BusinessError) => void) : void => {
915      let execFun = (): void => {
916        return bundleManager.setApplicationEnabledNative(bundleName, isEnabled, 0, false);
917      };
918      let p1 = taskpool.execute(execFun);
919      p1.then((): void => {
920        resolve(undefined);
921      }, (err: Error): void => {
922        reject(err as BusinessError);
923      });
924    }
925    );
926    return p;
927  }
928
929  function setApplicationEnabled(bundleName: string, isEnabled: boolean, callback: AsyncCallback<void>): void {
930    let execFun = (): void => {
931      return bundleManager.setApplicationEnabledNative(bundleName, isEnabled, 0, false);
932    };
933    let p1 = taskpool.execute(execFun);
934    p1.then(() => {
935      callback(null, undefined);
936    }, (err: Error): void => {
937      callback(err as BusinessError, undefined);
938    });
939  }
940
941  function getDynamicIcon(bundleName: string): Promise<string> {
942    let p = new Promise<string>((
943      resolve: (icon: string) => void, reject: (error: BusinessError) => void) => {
944      let execFun = (): string => {
945        return bundleManager.getDynamicIconNative(bundleName);
946      };
947      let p1 = taskpool.execute(execFun);
948      p1.then((e: NullishType) => {
949        let icon: string = e as string;
950        resolve(icon);
951      }, (err: Error): void => {
952        reject(err as BusinessError);
953      });
954    }
955    );
956    return p;
957  }
958
959  function queryAbilityInfo(wants: Array<Want>, abilityFlags: number, userId?: number): Promise<Array<AbilityInfo>> {
960    let p = new Promise<Array<AbilityInfo>>((resolve: (abilityInfos: Array<AbilityInfo>)
961      => void, reject: (error: BusinessError) => void) => {
962        let userIdInfo: number = userId ?? EMPTY_USER_ID;
963      let execFun = (): Array<AbilityInfo> => {
964        return bundleManager.queryAbilityInfoWithWantsNative(wants, abilityFlags, userIdInfo);
965      };
966      let p1 = taskpool.execute(execFun);
967      p1.then((e: NullishType) => {
968        let resultAbilityInfos: Array<AbilityInfo> = e as Array<AbilityInfo>;
969        resolve(resultAbilityInfos);
970      }, (err: Error): void => {
971        reject(err as BusinessError);
972      });
973    }
974    );
975    return p;
976  }
977
978  function enableDynamicIcon(bundleName: string, moduleName: string): Promise<void> {
979    let p = new Promise<void>((resolve: (v:undefined) => void, reject: (error: BusinessError) => void) : void => {
980      let execFun = (): void => {
981        return bundleManager.enableDynamicIconNative(bundleName, moduleName);
982      };
983      let p1 = taskpool.execute(execFun);
984      p1.then((): void => {
985        resolve(undefined);
986      }, (err: Error): void => {
987        reject(err as BusinessError);
988      });
989    }
990    );
991    return p;
992  }
993}
994
995export default bundleManager;
996