import { AppUtil } from './AppUtil';
import { StrUtil } from './StrUtil';
import { resourceManager } from '@kit.LocalizationKit';/*** 資源工具類。* 提供訪問應用資源的能力,包括布爾值、數字、字符串等資源的獲取。** @author 鴻蒙布道師* @since 2025/04/08*/
export class ResUtil {/*** 獲取提供訪問應用資源的能力。** @returns 返回 ResourceManager 實例。*/static getResourceManager(): resourceManager.ResourceManager {return AppUtil.getContext().resourceManager;}/*** 獲取指定資源對應的布爾結果。** @param resId 資源 ID 值或資源信息。* @returns 返回布爾值。*/static getBoolean(resId: number | Resource): boolean {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getBoolean(resId) : manager.getBoolean(resId);}/*** 獲取指定資源名稱對應的布爾結果。** @param resName 資源名稱。* @returns 返回布爾值。*/static getBooleanByName(resName: string): boolean {return ResUtil.getResourceManager().getBooleanByName(resName);}/*** 獲取指定資源對應的整數或浮點數值。** @param resId 資源 ID 值或資源信息。* @returns 返回數值。*/static getNumber(resId: number | Resource): number {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getNumber(resId) : manager.getNumber(resId);}/*** 獲取指定資源名稱對應的整數或浮點數值。** @param resName 資源名稱。* @returns 返回數值。*/static getNumberByName(resName: string): number {return ResUtil.getResourceManager().getNumberByName(resName);}/*** 獲取指定資源對應的字符串。* 支持格式化參數:* - 格式化符號:%d、%f、%s、%%、%數字\$d、%數字\$f、%數字\$s;* - 說明:%%轉義為%; %數字\$d表示使用第幾個參數;* - 示例:%%d格式化后為%d字符串; %1\$d表示使用第一個參數。** @param resId 資源 ID 值或資源信息。* @param args 格式化字符串資源參數(可選)。* @returns 返回格式化后的字符串。*/static getStringSync(resId: number | Resource, ...args: Array<string | number>): string {const manager = ResUtil.getResourceManager();return typeof resId === 'number'? manager.getStringSync(resId, ...args): manager.getStringSync(resId, ...args);}/*** 異步獲取指定資源對應的字符串。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為字符串。*/static async getStringValue(resId: number | Resource): Promise<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number'? manager.getStringValue(resId): manager.getStringValue(resId);}/*** 獲取指定資源名稱對應的字符串(同步)。* 支持格式化參數:* - 格式化符號:%d、%f、%s、%%、%數字\$d、%數字\$f、%數字\$s;* - 說明:%%轉義為%; %數字\$d表示使用第幾個參數;* - 示例:%%d格式化后為%d字符串; %1\$d表示使用第一個參數。** @param resName 資源名稱。* @param args 格式化字符串資源參數(可選)。* @returns 返回格式化后的字符串。*/static getStringByNameSync(resName: string, ...args: Array<string | number>): string {const manager = ResUtil.getResourceManager();return args.length > 0 ? manager.getStringByNameSync(resName, ...args) : manager.getStringByNameSync(resName);}/*** 獲取指定資源名稱對應的字符串(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為字符串。*/static async getStringByName(resName: string): Promise<string> {return ResUtil.getResourceManager().getStringByName(resName);}/*** 獲取指定資源對應的字符串數組(同步)。** @param resId 資源 ID 值或資源信息。* @returns 返回字符串數組。*/static getStringArrayValueSync(resId: number | Resource): Array<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getStringArrayValueSync(resId) : manager.getStringArrayValueSync(resId);}/*** 獲取指定資源對應的字符串數組(異步)。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為字符串數組。*/static async getStringArrayValue(resId: number | Resource): Promise<Array<string>> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getStringArrayValue(resId) : manager.getStringArrayValue(resId);}/*** 獲取指定資源名稱對應的字符串數組(同步)。** @param resName 資源名稱。* @returns 返回字符串數組。*/static getStringArrayByNameSync(resName: string): Array<string> {return ResUtil.getResourceManager().getStringArrayByNameSync(resName);}/*** 獲取指定資源名稱對應的字符串數組(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為字符串數組。*/static async getStringArrayByName(resName: string): Promise<Array<string>> {return ResUtil.getResourceManager().getStringArrayByName(resName);}/*** 根據指定數量獲取單復數字符串(同步)。** @param resId 資源 ID 值或資源信息。* @param num 數量值。* @returns 返回單復數字符串。*/static getPluralStringValueSync(resId: number | Resource, num: number): string {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getPluralStringValueSync(resId, num) : manager.getPluralStringValueSync(resId, num);}/*** 根據指定數量獲取單復數字符串(異步)。** @param resId 資源 ID 值或資源信息。* @param num 數量值。* @returns 返回 Promise,解析為單復數字符串。*/static async getPluralStringValue(resId: number | Resource, num: number): Promise<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getPluralStringValue(resId, num) : manager.getPluralStringValue(resId, num);}/*** 根據指定數量獲取資源名稱對應的單復數字符串(同步)。** @param resName 資源名稱。* @param num 數量值。* @returns 返回單復數字符串。*/static getPluralStringByNameSync(resName: string, num: number): string {return ResUtil.getResourceManager().getPluralStringByNameSync(resName, num);}/*** 根據指定數量獲取資源名稱對應的單復數字符串(異步)。** @param resName 資源名稱。* @param num 數量值。* @returns 返回 Promise,解析為單復數字符串。*/static async getPluralStringByName(resName: string, num: number): Promise<string> {return ResUtil.getResourceManager().getPluralStringByName(resName, num);}/*** 獲取指定資源對應的顏色值(十進制)(同步)。** @param resId 資源 ID 值或資源信息。* @returns 返回顏色值(十進制)。*/static getColorSync(resId: number | Resource): number {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getColorSync(resId) : manager.getColorSync(resId);}/*** 獲取指定資源對應的顏色值(十進制)(異步)。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為顏色值(十進制)。*/static async getColor(resId: number | Resource): Promise<number> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getColor(resId) : manager.getColor(resId);}/*** 獲取指定資源名稱對應的顏色值(十進制)(同步)。** @param resName 資源名稱。* @returns 返回顏色值(十進制)。*/static getColorByNameSync(resName: string): number {return ResUtil.getResourceManager().getColorByNameSync(resName);}/*** 獲取指定資源名稱對應的顏色值(十進制)(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為顏色值(十進制)。*/static async getColorByName(resName: string): Promise<number> {return ResUtil.getResourceManager().getColorByName(resName);}/*** 獲取指定資源對應的媒體文件內容(同步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @returns 返回媒體文件內容(Uint8Array)。*/static getMediaContentSync(resId: number | Resource, density?: number): Uint8Array {const manager = ResUtil.getResourceManager();return density !== undefined? (typeof resId === 'number' ? manager.getMediaContentSync(resId, density) : manager.getMediaContentSync(resId, density)): (typeof resId === 'number' ? manager.getMediaContentSync(resId) : manager.getMediaContentSync(resId));}/*** 獲取指定資源對應的媒體文件內容(異步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @returns 返回 Promise,解析為媒體文件內容(Uint8Array)。*/static async getMediaContent(resId: number | Resource, density?: number): Promise<Uint8Array> {const manager = ResUtil.getResourceManager();return density !== undefined? (typeof resId === 'number' ? manager.getMediaContent(resId, density) : manager.getMediaContent(resId, density)): (typeof resId === 'number' ? manager.getMediaContent(resId) : manager.getMediaContent(resId));}/*** 獲取指定資源名稱對應的媒體文件內容(同步或異步)。** @param resName 資源名稱。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回媒體文件內容(Uint8Array)。*/static getMediaByName(resName: string, density?: number, isAsync = false): Uint8Array | Promise<Uint8Array> {const manager = ResUtil.getResourceManager();if (isAsync) {return density !== undefined? manager.getMediaByName(resName, density): manager.getMediaByName(resName);} else {return density !== undefined? manager.getMediaByNameSync(resName, density): manager.getMediaByNameSync(resName);}}/*** 獲取指定資源 ID 對應的圖片資源 Base64 編碼(同步或異步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回圖片資源 Base64 編碼。*/static getMediaContentBase64(resId: number | Resource,density?: number,isAsync = false): string | Promise<string> {const manager = ResUtil.getResourceManager();const callMethod = isAsync ? 'getMediaContentBase64' : 'getMediaContentBase64Sync';return density !== undefined? typeof resId === 'number'? manager[callMethod](resId, density): manager[callMethod](resId, density): typeof resId === 'number'? manager[callMethod](resId): manager[callMethod](resId);}/*** 獲取指定資源名稱對應的圖片資源 Base64 編碼(同步或異步)。** @param resName 資源名稱。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回圖片資源 Base64 編碼。*/static getMediaBase64ByName(resName: string,density?: number,isAsync = false): string | Promise<string> {const manager = ResUtil.getResourceManager();return isAsync? density !== undefined? manager.getMediaBase64ByName(resName, density): manager.getMediaBase64ByName(resName): density !== undefined? manager.getMediaBase64ByNameSync(resName, density): manager.getMediaBase64ByNameSync(resName);}/*** 獲取 resources/rawfile 目錄下對應的 rawfile 文件內容(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件內容(Uint8Array)。*/static getRawFileContent(path: string, isAsync = false): Uint8Array | Promise<Uint8Array> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFileContent(path) : manager.getRawFileContentSync(path);}/*** 獲取 resources/rawfile 目錄下對應的 rawfile 文件內容,并轉換為字符串(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件內容(字符串)。*/static getRawFileContentStr(path: string, isAsync = false): string | Promise<string> {const getContent = isAsync? async (): Promise<string> => StrUtil.unit8ArrayToStr(await ResUtil.getRawFileContent(path, true)): (): string => StrUtil.unit8ArrayToStr(ResUtil.getRawFileContent(path, false));return getContent();}/*** 獲取 resources/rawfile 目錄下文件夾及文件列表(同步或異步)。** @param path rawfile 文件夾路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件列表。*/static getRawFileList(path: string, isAsync = false): Array<string> | Promise<Array<string>> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFileList(path) : manager.getRawFileListSync(path);}/*** 獲取 resources/rawfile 目錄下對應 rawfile 文件所在 HAP 的 descriptor 信息(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回 RawFileDescriptor。*/static getRawFd(path: string, isAsync = false): resourceManager.RawFileDescriptor | Promise<resourceManager.RawFileDescriptor> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFd(path) : manager.getRawFdSync(path);}/*** 關閉 resources/rawfile 目錄下 rawfile 文件所在 HAP 的 descriptor 信息(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。*/static closeRawFd(path: string, isAsync = false): void | Promise<void> {const manager = ResUtil.getResourceManager();return isAsync ? manager.closeRawFd(path) : manager.closeRawFdSync(path);}/*** 獲取設備的 Configuration(同步或異步)。** @param isAsync 是否為異步操作,默認為 false。* @returns 返回設備的 Configuration。*/static getConfiguration(isAsync = false): resourceManager.Configuration | Promise<resourceManager.Configuration> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getConfiguration() : manager.getConfigurationSync();}/*** 獲取設備的 DeviceCapability(同步或異步)。** @param isAsync 是否為異步操作,默認為 false。* @returns 返回設備的 DeviceCapability。*/static getDeviceCapability(isAsync = false): resourceManager.DeviceCapability | Promise<resourceManager.DeviceCapability> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getDeviceCapability() : manager.getDeviceCapabilitySync();}/*** 應用運行時,加載指定的資源路徑,實現資源覆蓋。** @param path 資源路徑。*/static addResource(path: string): void {ResUtil.getResourceManager().addResource(path);}/*** 用戶運行時,移除指定的資源路徑,還原被覆蓋前的資源。** @param path 資源路徑。*/static removeResource(path: string): void {ResUtil.getResourceManager().removeResource(path);}/*** 判斷指定路徑是否是 rawfile 下的目錄。** @param path rawfile 路徑。* @returns true 表示是 rawfile 下的目錄,false 表示不是。*/static isRawDir(path: string): boolean {return ResUtil.getResourceManager().isRawDir(path);}
}
代碼如下:
import { AppUtil } from './AppUtil';
import { StrUtil } from './StrUtil';
import { resourceManager } from '@kit.LocalizationKit';/*** 資源工具類。* 提供訪問應用資源的能力,包括布爾值、數字、字符串等資源的獲取。** @author 鴻蒙布道師* @since 2025/04/08*/
export class ResUtil {/*** 獲取提供訪問應用資源的能力。** @returns 返回 ResourceManager 實例。*/static getResourceManager(): resourceManager.ResourceManager {return AppUtil.getContext().resourceManager;}/*** 獲取指定資源對應的布爾結果。** @param resId 資源 ID 值或資源信息。* @returns 返回布爾值。*/static getBoolean(resId: number | Resource): boolean {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getBoolean(resId) : manager.getBoolean(resId);}/*** 獲取指定資源名稱對應的布爾結果。** @param resName 資源名稱。* @returns 返回布爾值。*/static getBooleanByName(resName: string): boolean {return ResUtil.getResourceManager().getBooleanByName(resName);}/*** 獲取指定資源對應的整數或浮點數值。** @param resId 資源 ID 值或資源信息。* @returns 返回數值。*/static getNumber(resId: number | Resource): number {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getNumber(resId) : manager.getNumber(resId);}/*** 獲取指定資源名稱對應的整數或浮點數值。** @param resName 資源名稱。* @returns 返回數值。*/static getNumberByName(resName: string): number {return ResUtil.getResourceManager().getNumberByName(resName);}/*** 獲取指定資源對應的字符串。* 支持格式化參數:* - 格式化符號:%d、%f、%s、%%、%數字\$d、%數字\$f、%數字\$s;* - 說明:%%轉義為%; %數字\$d表示使用第幾個參數;* - 示例:%%d格式化后為%d字符串; %1\$d表示使用第一個參數。** @param resId 資源 ID 值或資源信息。* @param args 格式化字符串資源參數(可選)。* @returns 返回格式化后的字符串。*/static getStringSync(resId: number | Resource, ...args: Array<string | number>): string {const manager = ResUtil.getResourceManager();return typeof resId === 'number'? manager.getStringSync(resId, ...args): manager.getStringSync(resId, ...args);}/*** 異步獲取指定資源對應的字符串。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為字符串。*/static async getStringValue(resId: number | Resource): Promise<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number'? manager.getStringValue(resId): manager.getStringValue(resId);}/*** 獲取指定資源名稱對應的字符串(同步)。* 支持格式化參數:* - 格式化符號:%d、%f、%s、%%、%數字\$d、%數字\$f、%數字\$s;* - 說明:%%轉義為%; %數字\$d表示使用第幾個參數;* - 示例:%%d格式化后為%d字符串; %1\$d表示使用第一個參數。** @param resName 資源名稱。* @param args 格式化字符串資源參數(可選)。* @returns 返回格式化后的字符串。*/static getStringByNameSync(resName: string, ...args: Array<string | number>): string {const manager = ResUtil.getResourceManager();return args.length > 0 ? manager.getStringByNameSync(resName, ...args) : manager.getStringByNameSync(resName);}/*** 獲取指定資源名稱對應的字符串(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為字符串。*/static async getStringByName(resName: string): Promise<string> {return ResUtil.getResourceManager().getStringByName(resName);}/*** 獲取指定資源對應的字符串數組(同步)。** @param resId 資源 ID 值或資源信息。* @returns 返回字符串數組。*/static getStringArrayValueSync(resId: number | Resource): Array<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getStringArrayValueSync(resId) : manager.getStringArrayValueSync(resId);}/*** 獲取指定資源對應的字符串數組(異步)。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為字符串數組。*/static async getStringArrayValue(resId: number | Resource): Promise<Array<string>> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getStringArrayValue(resId) : manager.getStringArrayValue(resId);}/*** 獲取指定資源名稱對應的字符串數組(同步)。** @param resName 資源名稱。* @returns 返回字符串數組。*/static getStringArrayByNameSync(resName: string): Array<string> {return ResUtil.getResourceManager().getStringArrayByNameSync(resName);}/*** 獲取指定資源名稱對應的字符串數組(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為字符串數組。*/static async getStringArrayByName(resName: string): Promise<Array<string>> {return ResUtil.getResourceManager().getStringArrayByName(resName);}/*** 根據指定數量獲取單復數字符串(同步)。** @param resId 資源 ID 值或資源信息。* @param num 數量值。* @returns 返回單復數字符串。*/static getPluralStringValueSync(resId: number | Resource, num: number): string {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getPluralStringValueSync(resId, num) : manager.getPluralStringValueSync(resId, num);}/*** 根據指定數量獲取單復數字符串(異步)。** @param resId 資源 ID 值或資源信息。* @param num 數量值。* @returns 返回 Promise,解析為單復數字符串。*/static async getPluralStringValue(resId: number | Resource, num: number): Promise<string> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getPluralStringValue(resId, num) : manager.getPluralStringValue(resId, num);}/*** 根據指定數量獲取資源名稱對應的單復數字符串(同步)。** @param resName 資源名稱。* @param num 數量值。* @returns 返回單復數字符串。*/static getPluralStringByNameSync(resName: string, num: number): string {return ResUtil.getResourceManager().getPluralStringByNameSync(resName, num);}/*** 根據指定數量獲取資源名稱對應的單復數字符串(異步)。** @param resName 資源名稱。* @param num 數量值。* @returns 返回 Promise,解析為單復數字符串。*/static async getPluralStringByName(resName: string, num: number): Promise<string> {return ResUtil.getResourceManager().getPluralStringByName(resName, num);}/*** 獲取指定資源對應的顏色值(十進制)(同步)。** @param resId 資源 ID 值或資源信息。* @returns 返回顏色值(十進制)。*/static getColorSync(resId: number | Resource): number {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getColorSync(resId) : manager.getColorSync(resId);}/*** 獲取指定資源對應的顏色值(十進制)(異步)。** @param resId 資源 ID 值或資源信息。* @returns 返回 Promise,解析為顏色值(十進制)。*/static async getColor(resId: number | Resource): Promise<number> {const manager = ResUtil.getResourceManager();return typeof resId === 'number' ? manager.getColor(resId) : manager.getColor(resId);}/*** 獲取指定資源名稱對應的顏色值(十進制)(同步)。** @param resName 資源名稱。* @returns 返回顏色值(十進制)。*/static getColorByNameSync(resName: string): number {return ResUtil.getResourceManager().getColorByNameSync(resName);}/*** 獲取指定資源名稱對應的顏色值(十進制)(異步)。** @param resName 資源名稱。* @returns 返回 Promise,解析為顏色值(十進制)。*/static async getColorByName(resName: string): Promise<number> {return ResUtil.getResourceManager().getColorByName(resName);}/*** 獲取指定資源對應的媒體文件內容(同步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @returns 返回媒體文件內容(Uint8Array)。*/static getMediaContentSync(resId: number | Resource, density?: number): Uint8Array {const manager = ResUtil.getResourceManager();return density !== undefined? (typeof resId === 'number' ? manager.getMediaContentSync(resId, density) : manager.getMediaContentSync(resId, density)): (typeof resId === 'number' ? manager.getMediaContentSync(resId) : manager.getMediaContentSync(resId));}/*** 獲取指定資源對應的媒體文件內容(異步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @returns 返回 Promise,解析為媒體文件內容(Uint8Array)。*/static async getMediaContent(resId: number | Resource, density?: number): Promise<Uint8Array> {const manager = ResUtil.getResourceManager();return density !== undefined? (typeof resId === 'number' ? manager.getMediaContent(resId, density) : manager.getMediaContent(resId, density)): (typeof resId === 'number' ? manager.getMediaContent(resId) : manager.getMediaContent(resId));}/*** 獲取指定資源名稱對應的媒體文件內容(同步或異步)。** @param resName 資源名稱。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回媒體文件內容(Uint8Array)。*/static getMediaByName(resName: string, density?: number, isAsync = false): Uint8Array | Promise<Uint8Array> {const manager = ResUtil.getResourceManager();if (isAsync) {return density !== undefined? manager.getMediaByName(resName, density): manager.getMediaByName(resName);} else {return density !== undefined? manager.getMediaByNameSync(resName, density): manager.getMediaByNameSync(resName);}}/*** 獲取指定資源 ID 對應的圖片資源 Base64 編碼(同步或異步)。** @param resId 資源 ID 值或資源信息。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回圖片資源 Base64 編碼。*/static getMediaContentBase64(resId: number | Resource,density?: number,isAsync = false): string | Promise<string> {const manager = ResUtil.getResourceManager();const callMethod = isAsync ? 'getMediaContentBase64' : 'getMediaContentBase64Sync';return density !== undefined? typeof resId === 'number'? manager[callMethod](resId, density): manager[callMethod](resId, density): typeof resId === 'number'? manager[callMethod](resId): manager[callMethod](resId);}/*** 獲取指定資源名稱對應的圖片資源 Base64 編碼(同步或異步)。** @param resName 資源名稱。* @param density 屏幕密度(可選),0 或缺省表示默認屏幕密度。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回圖片資源 Base64 編碼。*/static getMediaBase64ByName(resName: string,density?: number,isAsync = false): string | Promise<string> {const manager = ResUtil.getResourceManager();return isAsync? density !== undefined? manager.getMediaBase64ByName(resName, density): manager.getMediaBase64ByName(resName): density !== undefined? manager.getMediaBase64ByNameSync(resName, density): manager.getMediaBase64ByNameSync(resName);}/*** 獲取 resources/rawfile 目錄下對應的 rawfile 文件內容(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件內容(Uint8Array)。*/static getRawFileContent(path: string, isAsync = false): Uint8Array | Promise<Uint8Array> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFileContent(path) : manager.getRawFileContentSync(path);}/*** 獲取 resources/rawfile 目錄下對應的 rawfile 文件內容,并轉換為字符串(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件內容(字符串)。*/static getRawFileContentStr(path: string, isAsync = false): string | Promise<string> {const getContent = isAsync? async (): Promise<string> => StrUtil.unit8ArrayToStr(await ResUtil.getRawFileContent(path, true)): (): string => StrUtil.unit8ArrayToStr(ResUtil.getRawFileContent(path, false));return getContent();}/*** 獲取 resources/rawfile 目錄下文件夾及文件列表(同步或異步)。** @param path rawfile 文件夾路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回文件列表。*/static getRawFileList(path: string, isAsync = false): Array<string> | Promise<Array<string>> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFileList(path) : manager.getRawFileListSync(path);}/*** 獲取 resources/rawfile 目錄下對應 rawfile 文件所在 HAP 的 descriptor 信息(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。* @returns 返回 RawFileDescriptor。*/static getRawFd(path: string, isAsync = false): resourceManager.RawFileDescriptor | Promise<resourceManager.RawFileDescriptor> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getRawFd(path) : manager.getRawFdSync(path);}/*** 關閉 resources/rawfile 目錄下 rawfile 文件所在 HAP 的 descriptor 信息(同步或異步)。** @param path rawfile 文件路徑。* @param isAsync 是否為異步操作,默認為 false。*/static closeRawFd(path: string, isAsync = false): void | Promise<void> {const manager = ResUtil.getResourceManager();return isAsync ? manager.closeRawFd(path) : manager.closeRawFdSync(path);}/*** 獲取設備的 Configuration(同步或異步)。** @param isAsync 是否為異步操作,默認為 false。* @returns 返回設備的 Configuration。*/static getConfiguration(isAsync = false): resourceManager.Configuration | Promise<resourceManager.Configuration> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getConfiguration() : manager.getConfigurationSync();}/*** 獲取設備的 DeviceCapability(同步或異步)。** @param isAsync 是否為異步操作,默認為 false。* @returns 返回設備的 DeviceCapability。*/static getDeviceCapability(isAsync = false): resourceManager.DeviceCapability | Promise<resourceManager.DeviceCapability> {const manager = ResUtil.getResourceManager();return isAsync ? manager.getDeviceCapability() : manager.getDeviceCapabilitySync();}/*** 應用運行時,加載指定的資源路徑,實現資源覆蓋。** @param path 資源路徑。*/static addResource(path: string): void {ResUtil.getResourceManager().addResource(path);}/*** 用戶運行時,移除指定的資源路徑,還原被覆蓋前的資源。** @param path 資源路徑。*/static removeResource(path: string): void {ResUtil.getResourceManager().removeResource(path);}/*** 判斷指定路徑是否是 rawfile 下的目錄。** @param path rawfile 路徑。* @returns true 表示是 rawfile 下的目錄,false 表示不是。*/static isRawDir(path: string): boolean {return ResUtil.getResourceManager().isRawDir(path);}
}