HarmonyOS 鸿蒙Next BundleInfo和applicationInfo

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

HarmonyOS 鸿蒙Next BundleInfo和applicationInfo

通过下面几种方式获取到的appname有什么区别? 哪个才是应用的包名?还是都可以? 
深色代码主题
复制
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;
let bundleInfo: bundleManager.BundleInfo = bundleManager.getBundleInfoForSelfSync(bundleFlags);
let name1 = bundleInfo.name;
let name2 = bundleInfo.appInfo.name;
let name3 = getContext().applicationInfo.name;


更多关于HarmonyOS 鸿蒙Next BundleInfo和applicationInfo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

三种方式获取的均为包名

包名修改请修改AppScope的app.bundleName属性

name1为获取到的为程序包名,带引号

name2为获取到的为应用程序名称,和包名相同,带引号

name3为获取到的为程序包名,和包名相同,不带引号

ApplicationInfo计划废弃

//以下为测试demo:

深色代码主题
复制
import { bundleManager } from '@kit.AbilityKit';

@Entry @Component struct Index { @State message: string = ‘Hello World’;

build() {

<span class="hljs-title class_">Scroll</span>() {

  <span class="hljs-title class_">Column</span>() {

    <span class="hljs-title class_">Text</span>(<span class="hljs-variable language_">this</span>.<span class="hljs-property">message</span>)

    <span class="hljs-comment">//bundleName长度在7到128个字符之间,采用反向域名命名规则,建议第一个标签是顶级域名`com`,第二个标签是供应商或个人名称,第三个标签是应用程序名称, 满足正则"^[a-zA-Z][0-9a-zA-Z_.]+$"</span>

    <span class="hljs-comment">// - `[a-zA-Z]` 表示第一个字符必须是任意大小写字母。</span>

    <span class="hljs-comment">// - `[0-9a-zA-Z_.]+` 表示接下来的字符可以是数字、字母、下划线或点号,并且至少有一个这样的字符。</span>

    <span class="hljs-comment">// - `$` 表示字符串的结束。</span>

    <span class="hljs-comment">// 三种方式获取的均为包名</span>

    <span class="hljs-comment">// 包名修改请修改AppScope的app.bundleName属性</span>

    <span class="hljs-title class_">Button</span>(<span class="hljs-string">"bundleInfo.name"</span>).<span class="hljs-title function_">onClick</span>(<span class="hljs-function">() =&gt;</span> {

      <span class="hljs-comment">// 获取到的为程序包名,带引号</span>

      <span class="hljs-keyword">let</span> bundleFlags = bundleManager.<span class="hljs-property">BundleFlag</span>.<span class="hljs-property">GET_BUNDLE_INFO_WITH_APPLICATION</span>;

      <span class="hljs-keyword">let</span> <span class="hljs-attr">bundleInfo</span>: bundleManager.<span class="hljs-property">BundleInfo</span> = bundleManager.<span class="hljs-title function_">getBundleInfoForSelfSync</span>(bundleFlags);

      <span class="hljs-variable language_">this</span>.<span class="hljs-property">message</span> = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>(bundleInfo.<span class="hljs-property">name</span>)

    })

    <span class="hljs-title class_">Button</span>(<span class="hljs-string">"bundleInfo.name"</span>).<span class="hljs-title function_">onClick</span>(<span class="hljs-function">() =&gt;</span> {

      <span class="hljs-comment">// 获取到的为应用程序名称,和包名相同,带引号</span>

      <span class="hljs-keyword">let</span> bundleFlags = bundleManager.<span class="hljs-property">BundleFlag</span>.<span class="hljs-property">GET_BUNDLE_INFO_WITH_APPLICATION</span>;

      <span class="hljs-keyword">let</span> <span class="hljs-attr">bundleInfo</span>: bundleManager.<span class="hljs-property">BundleInfo</span> = bundleManager.<span class="hljs-title function_">getBundleInfoForSelfSync</span>(bundleFlags);

      <span class="hljs-variable language_">this</span>.<span class="hljs-property">message</span> = <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">stringify</span>(bundleInfo.<span class="hljs-property">appInfo</span>.<span class="hljs-property">name</span>)

    })

    <span class="hljs-title class_">Button</span>(<span class="hljs-string">"getContext name"</span>).<span class="hljs-title function_">onClick</span>(<span class="hljs-function">() =&gt;</span> {

      <span class="hljs-comment">// 获取到的为程序包名,不带引号</span>

      <span class="hljs-comment">// ApplicationInfo计划废弃</span>

      <span class="hljs-variable language_">this</span>.<span class="hljs-property">message</span> = <span class="hljs-title function_">getContext</span>().<span class="hljs-property">applicationInfo</span>.<span class="hljs-property">name</span>;

    })

  }

}

.<span class="hljs-title function_">height</span>(<span class="hljs-string">'100%'</span>)

.<span class="hljs-title function_">width</span>(<span class="hljs-string">'100%'</span>)

} }

更多关于HarmonyOS 鸿蒙Next BundleInfo和applicationInfo的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,BundleInfoApplicationInfo 是两个关键类,它们分别用于描述应用包(Bundle)和应用本身的信息。

BundleInfo 类提供了关于应用包的基本信息,包括但不限于包名、版本、签名等。这个类在鸿蒙系统中用于管理应用的安装、更新以及权限控制等。通过BundleInfo,系统能够识别不同的应用包,并据此进行一系列的管理操作。

ApplicationInfo 类则更专注于描述应用本身的信息。它包含了应用的启动图标、名称、是否支持调试模式等详细信息。这些信息在应用启动时由系统读取,用于在用户界面上展示应用,以及控制应用的一些运行时行为。

与Android系统类似,鸿蒙系统中的BundleInfoApplicationInfo也是通过包管理器(PackageManager)进行访问的。开发者可以通过包管理器获取安装在设备上的应用的BundleInfoApplicationInfo,进而实现应用管理、权限请求等功能。

需要注意的是,鸿蒙系统的API可能会随着版本的更新而有所变化,因此开发者在使用时需要参考最新的官方文档。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部