在一个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

3 回复

根据场景有以下两种解决方案:

  1. 可以把资源放在在app层级 AppScope中,这样可以在sdk中正常使用getContext(this).resourceManager.getStringSync($r('app.string.EntryAbility_label'))

  2. 如果资源在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类来查询应用的信息。具体步骤如下:

  1. 获取BundleManager实例:通过Context获取BundleManager实例。

    const bundleManager = context.getBundleManager();
    
  2. 查询应用信息:使用BundleManagergetApplicationInfo方法查询应用信息。

    const appInfo = await bundleManager.getApplicationInfo(bundleName, 0, userId);
    
  3. 获取桌面入口标签:从查询到的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的桌面入口标签,可以通过以下步骤实现:

  1. 定义模块配置文件:在module.json5文件中,配置abilities字段,确保launchType设置为standard,并在label字段中指定桌面入口标签。

  2. 使用API获取标签:通过BundleManagergetAbilityLabel方法,传入bundleNameabilityName,即可获取对应APP的桌面入口标签。

  3. 动态更新标签:如果需要动态更新标签,可以在onWindowStageCreate生命周期中调用setAbilityLabel方法。

确保配置和代码正确,以实现标签的获取与更新。

回到顶部