b6c02d88创建于 9 天前历史提交

ohos.resource_manager(资源管理)

说明:

当前为Beta阶段。

resource_manager模块提供资源获取能力。根据当前的Configuration配置提供获取应用资源对象读取接口。

Configuration配置包括语言、区域、横竖屏、Mcc(移动国家码)和Mnc(移动网络码)、Device capability(设备类型)、Density(分辨率)。

导入模块

import kit.LocalizationKit.*

使用说明

API示例代码使用说明:

  • 若示例代码首行有“// index.cj”注释,表示该示例可在仓颉模板工程的“index.cj”文件中编译运行。
  • 若示例需获取Context应用上下文,需在仓颉模板工程中的“main_ability.cj”文件中进行配置。

上述示例工程及配置模板详见仓颉示例代码说明

class Configuration

public class Configuration {
    public var direction: Direction
    public var locale: String
    public var deviceType: DeviceType
    public var screenDensity: ScreenDensity
    public var colorMode: ColorMode
    public var mcc: UInt32
    public var mnc: UInt32
}

功能: 表示当前设备的状态。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var colorMode

public var colorMode: ColorMode

功能: 颜色模式。

类型: ColorMode

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var deviceType

public var deviceType: DeviceType

功能: 设备类型。

类型: DeviceType

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var direction

public var direction: Direction

功能: 屏幕方向。

类型: Direction

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var locale

public var locale: String

功能: 语言文字国家地区。

类型: String

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var mcc

public var mcc: UInt32

功能: 移动国家码。

类型: UInt32

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var mnc

public var mnc: UInt32

功能: 移动网络码。

类型: UInt32

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var screenDensity

public var screenDensity: ScreenDensity

功能: 屏幕密度。

类型: ScreenDensity

读写能力: 可读写

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

class DeviceCapability

public class DeviceCapability {
    public var screenDensity: ScreenDensity
    public var deviceType: DeviceType
}

功能: 表示设备支持的能力。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var deviceType

public var deviceType: DeviceType

功能: 当前设备类型。

类型: DeviceType

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

var screenDensity

public var screenDensity: ScreenDensity

功能: 当前设备屏幕密度。

类型: ScreenDensity

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

class ResourceManager

public class ResourceManager {}

功能: 提供访问应用资源和系统资源的能力。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

func addResource(String)

public func addResource(path: String): Unit

功能: 应用运行时加载指定的资源路径,实现资源覆盖。

说明

rawfile和resfile目录不支持资源覆盖。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 资源路径。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let path = "/data/storage/el2/base/haps/entry/files/library-default-unsigned.hsp"
    resourceManager.addResource(path)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func closeRawFd(String)

public func closeRawFd(path: String): Unit

功能: 关闭resources/rawfile目录下rawfile文件所在HAP的文件描述符(fd)。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - rawfile文件路径。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let rawfd = resourceManager.closeRawFd("test.txt")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getBoolean(UInt32)

public func getBoolean(resId: UInt32): Bool

功能: 获取指定资源ID值对应的布尔值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。

返回值:

类型 说明
Bool 资源ID值对应的布尔值。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.boolean.test)
    let result = resourceManager.getBoolean(res.id)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getBooleanByName(String)

public func getBooleanByName(resName: String): Bool

功能: 获取指定资源名称对应的布尔值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。

返回值:

类型 说明
Bool 资源名称对应的布尔值。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let result = resourceManager.getBooleanByName("test")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getColor(UInt32)

public func getColor(resId: UInt32): UInt32

功能: 获取指定资源ID对应的颜色值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。

返回值:

类型 说明
UInt32 返回资源ID值对应的颜色值(十进制)。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.color.test)
    let result = resourceManager.getColor(res.id)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getColorByName(String)

public func getColorByName(resName: String): UInt32

功能: 获取指定资源名称对应的颜色值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。

返回值:

类型 说明
UInt32 返回资源名称对应的颜色值(十进制)。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let result = resourceManager.getColorByName("test")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getConfiguration()

public func getConfiguration(): Configuration

功能: 获取设备的Configuration。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

返回值:

类型 说明
Configuration 设备的Configuration。

示例:

// index.cj

import kit.LocalizationKit.*
import kit.PerformanceAnalysisKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let configuration = resourceManager.getConfiguration()
    Hilog.info(0, "test", configuration.locale, "")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getDeviceCapability()

public func getDeviceCapability(): DeviceCapability

功能: 获取设备的DeviceCapability。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

返回值:

类型 说明
DeviceCapability 设备的DeviceCapability。

示例:

// index.cj

import kit.LocalizationKit.*
import kit.PerformanceAnalysisKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let deviceCapability = resourceManager.getDeviceCapability()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getLocales(Bool)

public func getLocales(includeSystem!: Bool = false): Array<String>

功能: 获取应用的语言列表。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
includeSystem Bool false 命名参数。 是否包含系统资源,默认值为false。
- false:表示仅获取应用资源的语言列表。
- true:表示获取系统资源和应用资源的语言列表。
当使用系统资源管理对象获取语言列表时,includeSystem值无效,始终返回系统资源语言列表。

返回值:

类型 说明
Array<String> 返回获取的语言列表,列表中的字符串由语言、脚本(可选)、地区(可选),按照顺序使用中划线“-”连接组成。

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    resourceManager.getLocales()
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getMediaBase64ByName(String, ?ScreenDensity)

public func getMediaBase64ByName(resName: String, density!: ?ScreenDensity = None): String

功能: 获取指定资源名称对应的默认或指定的屏幕密度图片资源Base64编码。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源ID。
density ?ScreenDensity None 命名参数。 资源获取需要的屏幕密度,0或缺省表示默认屏幕密度。

返回值:

类型 说明
String 资源名称对应的图片资源Base64编码。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let code = resourceManager.getMediaBase64ByName("test")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getMediaByName(String, ?ScreenDensity)

public func getMediaByName(resName: String, density!: ?ScreenDensity = None): Array<UInt8>

功能: 获取指定资源名称对应的默认或指定的屏幕密度媒体文件内容。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。
density ?ScreenDensity None 命名参数。 资源获取需要的屏幕密度,0或缺省表示默认屏幕密度。

返回值:

类型 说明
Array<UInt8> 资源名称对应的媒体文件内容。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    resourceManager.getMediaByName("test", density: ScreenMdpi)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getMediaContent(UInt32, ?ScreenDensity)

public func getMediaContent(resId: UInt32, density!: ?ScreenDensity = None): Array<UInt8>

功能: 获取指定资源ID对应的默认或指定的屏幕密度媒体文件内容。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。
density ?ScreenDensity None 命名参数。 资源获取需要的屏幕密度,0或缺省表示默认屏幕密度。

返回值:

类型 说明
Array<UInt8> 资源ID对应的媒体文件内容。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.media.test)
    resourceManager.getMediaContent(res.id, density: ScreenSdpi)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getMediaContentBase64(UInt32, ?ScreenDensity)

public func getMediaContentBase64(resId: UInt32, density!: ?ScreenDensity = None): String

功能: 获取指定资源ID对应的默认或指定的屏幕密度图片资源Base64编码。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。
density ?ScreenDensity None 命名参数。 资源获取需要的屏幕密度,0或缺省表示默认屏幕密度。

返回值:

类型 说明
String 资源ID对应的图片资源Base64编码。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.media.test)
    let code = resourceManager.getMediaContentBase64(res.id)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getNumber(UInt32)

public func getNumber(resId: UInt32): NumberValueType

功能: 获取指定资源ID对应的Int32数值或者Float32数值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID。

返回值:

类型 说明
NumberValueType 资源ID值对应的数值。
Int32对应的是原数值,Float32不带单位时对应的是原数值,带"vp","fp"单位时对应的是px值,具体参考示例代码。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import kit.PerformanceAnalysisKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.integer.test)
    let number = resourceManager.getNumber(res.id)
    match (number) {
        case Int32Value(v) => Hilog.info(0, "test", v.toString(), "")
        case Float32Value(v) => Hilog.info(0, "test", v.toString(), "")
        case _ => throw IllegalArgumentException("The type is not supported.")
    }
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getNumberByName(String)

public func getNumberByName(resName: String): NumberValueType

功能: 获取指定资源名称对应的Int32数值或者Float32数值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。

返回值:

类型 说明
NumberValueType 资源名称对应的数值。
Int32对应的是原数值,Float32不带单位时对应的是原数值,带"vp","fp"单位时对应的是px值。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import kit.PerformanceAnalysisKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let number = resourceManager.getNumberByName("test")
    match (number) {
        case Int32Value(v) => Hilog.info(0, "test", v.toString(), "")
        case Float32Value(v) => Hilog.info(0, "test", v.toString(), "")
        case _ => throw IllegalArgumentException("The type is not supported.")
    }
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getPluralStringByName(String, Int64)

public func getPluralStringByName(resName: String, num: Int64): String

功能: 获取指定资源名称,指定资源数量的单复数字符串。

说明

中文环境下,字符串不区分单复数;其他语言环境下,字符串区分单复数,具体规则参考语言单复数规则

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。
num Int64 - 数量值。根据当前语言的复数规则获取该数量值对应的字符串数字,语言的复数规则参见语言单复数规则

返回值:

类型 说明
String 根据指定数量获取指定资源名称表示的单复数字符串。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let result = resourceManager.getPluralStringByName("test", 1)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getPluralStringValue(UInt32, Int64)

public func getPluralStringValue(resId: UInt32, num: Int64): String

功能: 获取指定资源ID,指定资源数量的单复数字符串。

说明

中文环境下,字符串不区分单复数;其他语言环境下,字符串区分单复数,具体规则参考语言单复数规则

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。
num Int64 - 数量值。根据当前语言的复数规则获取该数量值对应的字符串数字,语言的复数规则参见语言单复数规则

返回值:

类型 说明
String 根据指定数量获取指定ID字符串表示的单复数字符串。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.plural.test)
    let result = resourceManager.getPluralStringValue(res.id, 1)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getRawFd(String)

public func getRawFd(path: String): RawFileDescriptor

功能: 获取resources/rawfile目录下rawfile文件所在HAP的文件描述符(fd)。

说明

文件描述符(fd)使用完毕后需调用closeRawFd关闭fd,避免资源泄露。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - rawfile文件路径。

返回值:

类型 说明
RawFileDescriptor rawfile文件所在HAP的文件描述符(fd)。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import kit.PerformanceAnalysisKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let rawfd = resourceManager.getRawFd("test.txt")
    Hilog.info(0, "test", "${rawfd.fd} ${rawfd.offset} ${rawfd.length}", "")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getRawFileContent(String)

public func getRawFileContent(path: String): Array<UInt8>

功能: 获取resources/rawfile目录下对应的rawfile文件内容。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - rawfile文件路径。

返回值:

类型 说明
Array<UInt8> 返回获取的rawfile文件内容。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    resourceManager.getRawFileContent("test.txt")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getRawFileList(String)

public func getRawFileList(path: String): Array<String>

功能: 获取resources/rawfile目录下文件夹及文件列表。

说明

若文件夹中无文件,则抛出异常;若文件夹中有文件,则返回文件夹及文件列表。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - rawfile文件夹路径。

返回值:

类型 说明
Array<String> rawfile文件目录下的文件夹及文件列表。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    resourceManager.getRawFileList("")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getString(UInt32, Array<ArgsValueType>)

public func getString(resId: UInt32, args: Array<ArgsValueType>): String

功能: 获取指定资源ID对应的字符串,并根据args参数对字符串进行格式化。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。
args Array<ArgsValueType> - 格式化字符串资源参数。
支持参数类型:%d%f%s%%、。
说明:%%转义为%
举例:%%d格式化后为%d字符串。

返回值:

类型 说明
String 资源ID值对应的格式化字符串。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.
    9001007 Failed to format the resource obtained based on the resource ID.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let resource = @r(app.string.test)
    let result = resourceManager.getString(resource.id)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getStringArrayByName(String)

public func getStringArrayByName(resName: String): Array<String>

功能: 获取指定资源名称对应的字符串数组。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。

返回值:

类型 说明
Array<String> 对应资源名称的字符串数组。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    resourceManager.getStringArrayByName("test")
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getStringArrayValue(UInt32)

public func getStringArrayValue(resId: UInt32): Array<String>

功能: 获取指定资源ID对应的字符串数组。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resId UInt32 - 资源ID值。

返回值:

类型 说明
Array<String> 资源ID值对应的字符串数组。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001001 Invalid resource ID.
    9001002 No matching resource is found based on the resource ID.
    9001006 The resource is referenced cyclically.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.arkui.state_macro_manage.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let res = @r(app.strarray.test)
    let result = resourceManager.getStringArrayValue(res.id)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func getStringByName(String, Array<ArgsValueType>)

public func getStringByName(resName: String, args: Array<ArgsValueType>): String

功能: 获取指定资源名称对应的字符串,并根据args参数对字符串进行格式化。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
resName String - 资源名称。
args Array<ArgsValueType> - 格式化字符串资源参数。
支持参数类型:%d%f%s%%
说明:%%转义为%
举例:%%d格式化后为%d字符串。

返回值:

类型 说明
String 资源名对应的格式化字符串。

异常:

  • BusinessException:对应错误码如下表,详见资源管理错误码

    错误码ID 错误信息
    9001003 Invalid resource name.
    9001004 No matching resource is found based on the resource name.
    9001006 The resource is referenced cyclically.
    9001007 Failed to format the resource obtained based on the resource ID.

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let result = resourceManager.getStringByName("test", ArgsValueType.StringValue("format string"), ArgsValueType.Int32Value(10), ArgsValueType.Float32Value(98.78))
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

func removeResource(String)

public func removeResource(path: String): Unit

功能: 应用运行时移除指定的资源路径,还原被覆盖前的资源。

说明

rawfile和resfile目录不支持资源覆盖。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

参数:

参数名 类型 必填 默认值 说明
path String - 资源路径。

异常:

示例:

// index.cj

import kit.LocalizationKit.*
import ohos.business_exception.BusinessException
import kit.PerformanceAnalysisKit.Hilog

try {
    let resourceManager = Global.abilityContext.resourceManager
    let path = "/data/storage/el2/base/haps/entry/files/library-default-unsigned.hsp"
    resourceManager.removeResource(path)
} catch (e: BusinessException) {
    Hilog.info(0, "test", "${e.message}")
}

enum ArgsValueType

public enum ArgsValueType {
    | Int32Value(Int32)
    | Float32Value(Float32)
    | StringValue(String)
    | ...
}

功能: 格式化字符串资源参数枚举类型。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Float32Value(Float32)

Float32Value(Float32)

功能: Float32类型的格式化字符串资源参数枚举值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Int32Value(Int32)

Int32Value(Int32)

功能: Int32类型的格式化字符串资源参数枚举值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

StringValue(String)

StringValue(String)

功能: String类型的格式化字符串资源参数枚举值。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

enum ColorMode

public enum ColorMode {
    | Dark
    | Light
    | ...
}

功能: 用于表示当前设备颜色模式。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Dark

Dark

功能: 深色模式。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Light

Light

功能: 浅色模式。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

enum DeviceType

public enum DeviceType {
    | DeviceTypePhone
    | DeviceTypeTablet
    | DeviceTypeCar
    | DeviceTypePc
    | DeviceTypeTv
    | DeviceTypeWearable
    | DeviceType2In1
    | ...
}

功能: 用于表示当前设备类型。目前仓颉仅支持手机(Phone),平板(Tablet)。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceType2In1

DeviceType2In1

功能: 2in1设备。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypeCar

DeviceTypeCar

功能: 汽车。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypePc

DeviceTypePc

功能: 电脑。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypePhone

DeviceTypePhone

功能: 手机。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypeTv

DeviceTypeTv

功能: 电视。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypeTablet

DeviceTypeTablet

功能: 平板。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DeviceTypeWearable

DeviceTypeWearable

功能: 穿戴。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

enum Direction

public enum Direction {
    | DirectionVertical
    | DirectionHorizontal
    | ...
}

功能: 用于表示设备屏幕方向。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DirectionHorizontal

DirectionHorizontal

功能: 横屏。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

DirectionVertical

DirectionVertical

功能: 竖屏。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

enum NumberValueType

public enum NumberValueType {
    | Int32Value(Int32)
    | Float32Value(Float32)
    | ...
}

功能: 表示从资源中获取到的数字类型。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Float32Value(Float32)

Float32Value(Float32)

功能: 存储Float32类型值的Number类型。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

Int32Value(Int32)

Int32Value(Int32)

功能: 存储Int32类型值的Number类型。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

enum ScreenDensity

public enum ScreenDensity {
    | ScreenSdpi
    | ScreenMdpi
    | ScreenLdpi
    | ScreenXldpi
    | ScreenXxldpi
    | ScreenXxxldpi
    | ...
}

功能: 用于表示当前设备屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenLdpi

ScreenLdpi

功能: 高屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenMdpi

ScreenMdpi

功能: 中屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenSdpi

ScreenSdpi

功能: 低屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenXldpi

ScreenXldpi

功能: 特高屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenXxldpi

ScreenXxldpi

功能: 超高屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22

ScreenXxxldpi

ScreenXxxldpi

功能: 超特高屏幕密度。

系统能力: SystemCapability.Global.ResourceManager

起始版本: 22