HarmonyOS 鸿蒙Next中如何获取到其他应用信息

HarmonyOS 鸿蒙Next中如何获取到其他应用信息 我有个功能想要获取其他应用信息,能实现嘛,有相关接口提供嘛。我看bundleManage很多接口都废弃了

[@ohos.bundle (Bundle模块)-已停止维护的接口-ArkTS API-Ability Kit(程序框架服务)-应用框架 - 华为HarmonyOS开发者](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-bundle#bundlegetnameforuid8-deprecated)

是不是不支持了

cke_1808.png


更多关于HarmonyOS 鸿蒙Next中如何获取到其他应用信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

请使用新版:

bundleManager.getBundleNameByUid

支持设备PhonePC/2in1TabletTVWearable

getBundleNameByUid(uid: number): Promise<string>

根据给定的uid获取对应应用的bundleName。使用Promise异步回调。

需要权限: ohos.permission.GET_BUNDLE_INFO_PRIVILEGED

系统能力: SystemCapability.BundleManager.BundleFramework.Core

参数:

参数名 类型 必填 说明
uid number 表示应用程序的UID。

返回值:

类型 说明
Promise<string> Promise对象,返回bundleName。

错误码:

以下错误码的详细介绍请参见通用错误码ohos.bundle错误码

错误码ID 错误信息
201 Permission denied.
401 Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types.
17700021 The uid is not found.
import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
let uid = 20010005;
try {
    bundleManager.getBundleNameByUid(uid).then((data) => {
        hilog.info(0x0000, 'testTag', 'getBundleNameByUid successfully. Data: %{public}s', JSON.stringify(data));
    }).catch((err: BusinessError) => {
        hilog.error(0x0000, 'testTag', 'getBundleNameByUid failed. Cause: %{public}s', err.message);
    });
} catch (err) {
    let message = (err as BusinessError).message;
    hilog.error(0x0000, 'testTag', 'getBundleNameByUid failed. Cause: %{public}s', message);
}

更多关于HarmonyOS 鸿蒙Next中如何获取到其他应用信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你看的是哪个版本的文档呀?好像不是最新的,看看这个:bundleManager.getBundleInfo

在HarmonyOS Next中,获取其他应用信息主要通过@ohos.bundle.bundleManager模块。使用bundleManager.getBundleInfoForSelf()可获取自身应用信息。若需获取其他应用信息,需申请ohos.permission.GET_BUNDLE_INFO权限,并通过bundleManager.getBundleInfo()传入目标应用的bundleName。返回的BundleInfo对象包含应用版本、组件等详细信息。

在HarmonyOS Next中,获取其他应用信息的能力受到严格管控,以保护用户隐私和系统安全。您观察到的接口废弃情况正是这一策略的体现。

目前,应用只能通过以下有限方式获取其他应用信息:

  1. 查询本机已安装应用列表:可以使用 @ohos.bundle.bundleManager 中的 getAllBundleInfo 等接口,获取设备上所有已安装应用的基础信息(如应用名称、版本号、图标等)。这需要申请 ohos.permission.GET_BUNDLE_INFO_PRIVILEGED 权限,该权限为系统级权限,普通应用无法获取,通常仅适用于系统应用或具有特定证书签名的应用。

  2. 查询特定应用是否安装:可以通过 @ohos.bundle.bundleManagergetBundleInfo 接口,传入 bundleName 来查询特定应用是否存在及其公开信息。这同样需要上述系统级权限。

  3. 通过公共查询接口获取公开信息:对于系统预置的、或声明了特定公开能力的应用,可能存在一些公共查询接口,但这完全取决于目标应用自身的实现和暴露程度,并非通用方案。

核心结论: 对于普通的第三方应用,无法随意获取其他第三方应用的详细信息(如运行状态、内部数据等)。被标记为“已停止维护”或废弃的接口(特别是涉及通过UID查询等),在HarmonyOS Next中已不再对普通应用开放。

如果您的功能是设备管理、家长控制等特定场景,需要评估是否属于系统级功能,并考虑开发系统应用或与设备制造商合作。对于常规应用开发,应基于HarmonyOS的隐私设计规范,重新评估功能实现路径,避免依赖跨应用的信息获取。

回到顶部