在一个HSP类型的包里获取APP的桌面入口标签 | HarmonyOS鸿蒙Next
在一个HSP类型的包里获取APP的桌面入口标签 | HarmonyOS鸿蒙Next
前提条件:
1、有个HSP类型的SDK,
2、有个HAP
3、在HAP中引入了HSP类型的SDK。
需求: 如何在SDK里的一个非页面的类中获取 HAP下的桌面标签文案(APP显示在桌面的名称),即在SDK里想要获取APP的entry/src/main/resource/base/element/string.json里配置的name为"EntryAbility_label"里对应的value呢
现象: 在APP的index页面里可以通过
```javascript
getContext(this).resourceManager.getStringSync($r('app.string.EntryAbility_label'))
获取到名称。但是在SDK里没法使用$r(‘app.string.EntryAbility_label’)
更多关于在一个HSP类型的包里获取APP的桌面入口标签 | HarmonyOS鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据场景有以下两种解决方案:
-
可以把资源放在在app层级 AppScope中,这样可以在sdk中正常使用
getContext(this).resourceManager.getStringSync($r('app.string.EntryAbility_label')) -
如果资源在entry中,可以使用
getContext().resourceManager.getStringByNameSync("EntryAbility_label")
更多关于在一个HSP类型的包里获取APP的桌面入口标签 | HarmonyOS鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,HSP(Harmony Shared Package)是用于共享资源的模块化包。要在HSP类型的包中获取APP的桌面入口标签,可以使用BundleManager类来查询应用的信息。具体步骤如下:
-
获取BundleManager实例:通过
Context获取BundleManager实例。const bundleManager = context.getBundleManager(); -
查询应用信息:使用
BundleManager的getApplicationInfo方法查询应用信息。const appInfo = await bundleManager.getApplicationInfo(bundleName, 0, userId); -
获取桌面入口标签:从查询到的
ApplicationInfo对象中获取label属性,即为应用的桌面入口标签。const label = appInfo.label;
完整代码示例:
import bundleManager from '@ohos.bundle';
async function getAppLabel(context, bundleName, userId) {
try {
const appInfo = await bundleManager.getApplicationInfo(bundleName, 0, userId);
return appInfo.label;
} catch (error) {
console.error(`Failed to get application info: ${error.message}`);
}
}
该方法通过BundleManager获取应用的ApplicationInfo,并从中提取label属性,即为APP的桌面入口标签。
在HarmonyOS鸿蒙Next中,获取HSP类型包中APP的桌面入口标签,可以通过以下步骤实现:
-
定义模块配置文件:在
module.json5文件中,配置abilities字段,确保launchType设置为standard,并在label字段中指定桌面入口标签。 -
使用API获取标签:通过
BundleManager的getAbilityLabel方法,传入bundleName和abilityName,即可获取对应APP的桌面入口标签。 -
动态更新标签:如果需要动态更新标签,可以在
onWindowStageCreate生命周期中调用setAbilityLabel方法。
确保配置和代码正确,以实现标签的获取与更新。

