资源管理开发常见问题
如何读取rawfile中的xml文件并转化为String类型
适用于:OpenHarmony 3.2 Beta5 API 9
解决措施
通过resourceManager的getRawFileContent接口获取xml数据,再通过String.fromCharCode将获取的数据转化为String类型。
代码示例
resourceManager.getRawFileContent('test.xml', (error, value) => {
if (error != null) {
console.log("error is " + error);
} else {
let rawFile = value;
let xml = String.fromCharCode.apply(null, rawFile)
}
});
参考链接
Stage模型下如何获取资源
适用于:OpenHarmony 3.1 Beta5 API 9
解决措施
Stage模型支持了通过context获取resourceManager对象的方式,再调用其内部获取资源的接口,无需再导入包。此方式不适用于FA模型。
代码示例
const context = getContext(this) as any
context
.resourceManager
.getString($r('app.string.entry_desc').id)
.then(value => {
this.message = value.toString()
})
如何通过接口获取resource目录的路径
适用于:Openharmony 3.1 Beta5 API 9
问题现象
希望获取resource目录的路径,从而使用文件管理接口操作文件。
解决措施
由于应用以hap形式进行安装,安装完成后不会解压hap包,所以在程序运行时无法获取resource路径。
可以考虑如下两种方式获取资源文件:
-
使用$r或者$rawfile访问。适合静态访问,程序运行时不改变资源路径。
-
使用ResourceManage访问。适合动态访问,程序运行时可动态改变资源路径。
参考链接
资源管理内的getPluralString方法获取value值有误
适用于:OpenHarmony 3.2 Beta5 API 9
问题现象
getPluralString接口获取value值有误,显示复数值(other)。
解决措施
getPluralString接口只支持英文系统,不支持中文。
如何获取resources目录中自定义的string字段
适用于:OpenHarmony 3.2 Beta5 API 9
解决措施
使用ResourceManager模块的getStringValue方法获取。
参考链接
AppScope中的资源如图片,文字等如何引用
适用于:OpenHarmony 3.2 Beta5 API 9
解决措施
通过$r('app.type.name')的形式来引用,type代表资源类型,如color,string,media等,name代表资源命名。
Resource类型如何转为String
适用于:OpenHarmony 3.2 Beta5 API 9
解决措施
Resource为string支持限定词目录使用this.context.resourceManager.getStringSync($r('app.string.test').id),可以同步转换,不支持$r('app.string.test', 2)方式。
参考链接
form_config.json文件中是否可以使用$引用常量
适用于:OpenHarmony 3.2 Beta5 API 9
form_config.json文件中不支持使用$引用常量。