HarmonyOS 鸿蒙Next 动态获取应用名称

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 动态获取应用名称

// 获取应用名称 getAppName(): string { let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION; let bundleInfo = bundleManager.getBundleInfoForSelfSync(bundleFlags) return bundleInfo.appInfo.label }  app.json5 { “app”: { “bundleName”: “com.ce.ice”, “vendor”: “example”, “versionCode”: 1000000, “versionName”: “1.0.0”, “icon”: “$media:app_icon”, “label”: “$string:app_name” } } string.json { “string”: [ { “name”: “app_name”, “value”: “iCE” } ] }  我通过getAppName拿到的是$string:app_name, 请问我怎么才可以拿到iCE,而不是$string:app_name


更多关于HarmonyOS 鸿蒙Next 动态获取应用名称的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
我的moudle.json5中使用的是资源文件’$string:EntryAbility_label‘,这边提供了一个demo,包含了包名和应用名称的显示,你看下能否满足您的需求:

import common from '[@ohos](/user/ohos).app.ability.common';

const context = getContext(this) as common.UIAbilityContext

console.log(`bundleName: ${context.abilityInfo.bundleName}`)

[@Entry](/user/Entry)

[@Component](/user/Component)

struct Page240604115304029 {

  [@State](/user/State) message: string = 'Hello World';

  build() {

    Row() {

      Column() {

        Text($r('app.string.EntryAbility_label'))

          .fontSize(50)

          .fontWeight(FontWeight.Bold)

      }

      .width('100%')

    }

    .height('100%')

  }

}

可以试下以下写法获取应用名称:

try {

      let bundleInfo = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION);

      console.log(bundleInfo.appInfo.label);

      console.log(this.context.resourceManager.getStringSync(bundleInfo.appInfo.labelId));

    } catch (error) {

    }

├─AppScope # 应用域/服务域的目录,包含应用/服务的资源、配置等信息。

    │  └─resources # 应用/服务所用到的资源文件的根目录。

    │      └─base # 应用/服务所用到的资源文件的基础目录,包含了元素资源文件和媒体资源文件等。

    │          ├─element # 应用/服务所用到的元素资源文件目录,例如字符串、颜色等。

    │          │      string.json

    │          │

    │          └─media # 应用/服务所用到的媒体资源文件目录,包括图片、音频、视频等非文本格式的文件。

    │                  app_icon.png # 应用图标/服务图标文件。例如在设置应用中使用到的图标。

    │  │  app.json5 # 应用/服务的全局配置文件,包含应用/服务的Bundle名称、开发厂商、版本号等基本信息。

    │

    ├─entry # 应用/服务的工程入口模块,通过编译构建生成一个HAP文件。

    │  └─src # 入口模块的源代码目录。

    │      ├─main # 入口模块的主代码目录,包括应用/服务的入口代码和页面代码,以及所用到的资源文件。

    │      │  ├─ets # 入口模块的ArkTS文件目录,包含应用/服务的界面布局和交互逻辑代码。

    │      │  │  ├─entryability # 入口模块的入口UIAbility文件目录。

    │      │  │  │      EntryAbility.ts # 入口模块的入口UIAbility文件。

    │      │  │  │

    │      │  │  └─pages # 模块的页面文件目录。

    │      │  │          Index.ets # 模块的首页页面文件。

    │      │  │

    │      │  └─resources # 模块所用到的资源文件的根目录。

    │      │      ├─base # 模块所用到的资源文件的基础目录。该目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。

    │      │      │  ├─element # 模块所用到的元素资源目录,例如字符串、颜色等。

    │      │      │  │      color.json # 颜色配置文件。

    │      │      │  │      string.json # 字符串配置文件。

    │      │      │  │

    │      │      │  ├─media # 模块所用到的媒体资源目录,包括图片、音频和视频文件等。

    │      │      │  │      icon.png # UIAbility的入口图标文件。

    │      │      │  │

    │      │      │  └─profile # 模块所用到的配置目录,包括页面配置、卡片配置以及自定义配置等。

    │      │      │          main_pages.json # 模块的页面配置文件。

    │      │      │

    │      │      ├─en_US # 模块的限定词目录,表示所用到的英文资源文件目录。

    │      │      │  └─element # 英文资源文件所用到的元素文件目录,例如字符串等。

    │      │      │          string.json # 英文字符串配置文件。

    │      │      │

    │      │      ├─rawfile # 模块所用到的原始文件目录,例如证书文件、文本文件,以及较大的图片、音频和视频文件等。该目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。

    │      │      └─zh_CN # 模块的限定词目录,表示所用到的中文资源文件目录。

    │      │          └─element # 中文资源文件所用到的元素文件目录,例如字符串等。

    │      │                  string.json # 中文字符串配置文件。

    │      │  │  module.json5 # 模块的配置文件,包含模块的名称、类型、描述、支持的设备类型、模块中UIAbility的配置、模块中ExtensionAbility的配置,以及当前应用运行时需向系统申请的权限集合等基本信息。

    │      │

    │      └─ohosTest # 测试模块的文件目录,包含应用/服务的测试代码和资源文件。

    │  │  build-profile.json5 # 模块级构建配置文件,包括构建类型、编译配置选项以及多目标构建配置项等信息。

    │  │  hvigorfile.ts # 模块级编译构建任务脚本文件,包括自定义插件和自定义任务等脚本逻辑。

    │  │  oh-package.json5 # 模块级依赖管理配置文件,包括模块的名称、版本号以及依赖的OpenHarmony共享包等信息。

    │─hvigor # hvigor构建工具文件目录。

    │  └─hvigor-config.json5 # 定义hvigor引擎能力的配置文件,包含hvigor引擎运行时所需要的版本、依赖项、环境选项以及运行选项等。

    │  └─hvigor-wrapper.js # hvigor wrapper的核心代码文件。

    │─oh_modules # 第三方依赖库目录,包含应用/服务所依赖的第三方库文件。

    │ build-profile.json5 # 工程级构建配置文件,包括签名信息、依赖SDK版本以及产品配置等。

    │ hvigorfile.ts # 工程级编译构建任务脚本文件,包括自定义插件和自定义任务等脚本逻辑。

    │ hvigorw # hvigor编译构建文件,用于命令行的方式执行编译构建操作。基于Shell脚本的格式的文件。

    │ hvigorw.bat # hvigor编译构建文件,用于命令行的方式执行编译构建操作。基于Batch脚本的格式的文件。

    │ local.properties # 工程级构建配置文件,用于指定本地构建环境的路径,例如指定SDK、NodeJS的路径等。

    │ oh-package.json5 # 工程级项目依赖管理配置文件,包括模块的名称、版本号以及依赖的OpenHarmony共享包等信息。

    │ oh-package-lock.json5 # 工程级项目依赖管理配置锁定文件,记录当前状态下模块安装项目依赖时各个依赖包的具体来源和版

没复现您的问题,请您新建个工程运行以下完整demo测试,我这边的测试结果显示的就是AppScope中的string.json中设置的应用名称。

import { bundleManager } from '[@kit](/user/kit).AbilityKit';

try {

bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION, (err, data) => {

console.log("应用名称:"+getContext().resourceManager.getStringSync(data.appInfo.labelId));

});

} catch (err) {

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct listDemo {

build() {

Column(){

Text("测试")

}

}

}

更多关于HarmonyOS 鸿蒙Next 动态获取应用名称的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,动态获取应用名称的操作通常依赖于系统提供的API和接口。以下是一个直接的方法来实现这一功能:

  1. 获取包名:首先,你需要获取目标应用的包名。这可以通过系统服务或查询已安装应用列表来实现。

  2. 使用PackageManager:在鸿蒙系统中,存在类似Android的PackageManager类,尽管具体实现可能有所不同。你可以通过PackageManager获取应用信息,包括应用名称。

  3. 代码示例

    // 注意:此示例为伪代码,具体API调用需参考鸿蒙系统文档
    PackageManager pm = getPackageManager();
    String packageName = "com.example.app";
    ApplicationInfo appInfo = pm.getApplicationInfo(packageName, 0);
    String appName = (String) pm.getApplicationLabel(appInfo);
    

    注意:上述代码为示意性代码,实际在鸿蒙系统中,应使用鸿蒙提供的相应API和类。由于鸿蒙API与Android有所差异,需查阅鸿蒙官方文档以获取准确API。

  4. 权限要求:动态获取应用名称可能需要特定权限,确保你的应用已声明相关权限。

综上所述,通过PackageManager类(或其鸿蒙系统中的对应类)和适当的API调用,可以动态获取应用名称。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部