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}