• 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
16/**
17 * @file
18 * @kit AbilityKit
19 */
20
21import { AsyncCallback, BusinessError } from '@ohos.base';
22import { BundleResourceInfo } from 'bundleManager.BundleResourceInfo';
23import { LauncherAbilityResourceInfo } from 'bundleManager.LauncherAbilityResourceInfo';
24
25export default namespace bundleResourceManager {
26
27  loadLibrary("ani_bundle_res_manager.z");
28
29  const INVALID_INT: number = -500;
30
31  enum ResourceFlag {
32    GET_RESOURCE_INFO_ALL = 0x00000001,
33    GET_RESOURCE_INFO_WITH_LABEL = 0x00000002,
34    GET_RESOURCE_INFO_WITH_ICON = 0x00000004,
35    GET_RESOURCE_INFO_WITH_SORTED_BY_LABEL = 0x00000008,
36    GET_RESOURCE_INFO_WITH_DRAWABLE_DESCRIPTOR = 0x00000010,
37    GET_RESOURCE_INFO_ONLY_WITH_MAIN_ABILITY = 0x00000020
38  }
39
40  export native function getBundleResourceInfoNative(bundleName: string, resourceFlags: number, appIndex: number): BundleResourceInfo;
41  export native function getLauncherAbilityResourceInfoNative(bundleName: string, resourceFlags: number, appIndex: number): Array<LauncherAbilityResourceInfo>;
42  export native function getAllBundleResourceInfoNative(resourceFlags: number): Array<BundleResourceInfo>;
43  export native function getAllLauncherAbilityResourceInfoNative(resourceFlags: number): Array<LauncherAbilityResourceInfo>;
44
45  function getBundleResourceInfo(bundleName: string, resourceFlags?: number): BundleResourceInfo
46  {
47    let resFlag = resourceFlags ?? INVALID_INT;
48    return bundleResourceManager.getBundleResourceInfoNative(bundleName, resFlag, INVALID_INT);
49  }
50
51  function getBundleResourceInfo(bundleName: string, resourceFlags?: number, appIndex?: number): BundleResourceInfo
52  {
53    let resFlag = resourceFlags ?? INVALID_INT;
54    let appIdx = appIndex ?? INVALID_INT;
55    return bundleResourceManager.getBundleResourceInfoNative(bundleName, resFlag, appIdx);
56  }
57
58  function getLauncherAbilityResourceInfo(bundleName: string, resourceFlags?: number): Array<LauncherAbilityResourceInfo>
59  {
60    let resFlag = resourceFlags ?? INVALID_INT;
61    return bundleResourceManager.getLauncherAbilityResourceInfoNative(bundleName, resFlag, INVALID_INT);
62  }
63
64  function getLauncherAbilityResourceInfo(bundleName: string, resourceFlags?: number, appIndex?: number): Array<LauncherAbilityResourceInfo>
65  {
66    let resFlag = resourceFlags ?? INVALID_INT;
67    let appIdx = appIndex ?? INVALID_INT;
68    return bundleResourceManager.getLauncherAbilityResourceInfoNative(bundleName, resFlag, appIdx);
69  }
70
71  function getAllBundleResourceInfo(resourceFlags: number, callback: AsyncCallback<Array<BundleResourceInfo>>): void {
72    let cb = (): (Array<BundleResourceInfo>) => {
73      return bundleResourceManager.getAllBundleResourceInfoNative(resourceFlags);
74    };
75    let p1 = taskpool.execute(cb);
76    p1.then((e: NullishType) => {
77      let resultArray: Array<BundleResourceInfo> = e as Array<BundleResourceInfo>;
78      callback(null, resultArray);
79    }, (err: Error): void => {
80      callback(err as BusinessError, undefined);
81    });
82  }
83
84  function getAllBundleResourceInfo(resourceFlags: number): Promise<Array<BundleResourceInfo>> {
85    let p = new Promise<Array<BundleResourceInfo>>((resolve: (arrBundleResourceInfo: Array<BundleResourceInfo>) => void, reject: (error: BusinessError) => void) => {
86      let cb = (): (Array<BundleResourceInfo>) => {
87        return bundleResourceManager.getAllBundleResourceInfoNative(resourceFlags);
88      };
89      let p1 = taskpool.execute(cb);
90      p1.then((e: NullishType) => {
91        let resultArray: Array<BundleResourceInfo> = e as Array<BundleResourceInfo>;
92        resolve(resultArray);
93      }, (err: Error): void => {
94        reject(err as BusinessError);
95      });
96    });
97    return p;
98  }
99
100  function getAllLauncherAbilityResourceInfo(resourceFlags: number, callback: AsyncCallback<Array<LauncherAbilityResourceInfo>>): void {
101    let cb = (): (Array<LauncherAbilityResourceInfo>) => {
102      return bundleResourceManager.getAllLauncherAbilityResourceInfoNative(resourceFlags);
103    };
104    let p1 = taskpool.execute(cb);
105    p1.then((e: NullishType) => {
106      let resultArray: Array<LauncherAbilityResourceInfo> = e as Array<LauncherAbilityResourceInfo>;
107      callback(null, resultArray);
108    }, (err: Error): void => {
109      callback(err as BusinessError, undefined);
110    });
111  }
112
113  function getAllLauncherAbilityResourceInfo(resourceFlags: number): Promise<Array<LauncherAbilityResourceInfo>> {
114    let p = new Promise<Array<LauncherAbilityResourceInfo>>((resolve: (arrLauncherAbilityResourceInfo: Array<LauncherAbilityResourceInfo>) => void, reject: (error: BusinessError) => void) => {
115      let cb = (): (Array<LauncherAbilityResourceInfo>) => {
116        return bundleResourceManager.getAllLauncherAbilityResourceInfoNative(resourceFlags);
117      };
118      let p1 = taskpool.execute(cb);
119      p1.then((e: NullishType) => {
120        let resultArray: Array<LauncherAbilityResourceInfo> = e as Array<LauncherAbilityResourceInfo>;
121        resolve(resultArray);
122      }, (err: Error): void => {
123        reject(err as BusinessError);
124      });
125    });
126    return p;
127  }
128}