HarmonyOS鸿蒙Next中如何获取到用户的应用列表?

HarmonyOS鸿蒙Next中如何获取到用户的应用列表? 在API24该如何获取到用户的应用列表?

12 回复

API 24 需要先区分场景:普通三方应用没有面向用户已安装应用全量列表的开放接口。旧的 @ohos.bundle.getAllBundleInfo 已不建议使用,并且需要特权权限;GET_INSTALLED_BUNDLE_LIST 也属于系统应用权限范围,普通三方应用不能直接依赖它获取用户应用列表。

可用替代方案:

  1. 查询自身应用信息:使用 bundleManager.getBundleInfoForSelf(…)。
  2. 已知 bundleName 时查询指定应用:使用 bundleManager.getBundleInfo(bundleName, …);适合判断某个明确目标应用是否存在或读取其基础信息。
  3. 企业/MDM 管控场景:使用 enterprise.bundleManager.getInstalledBundleList(admin, accountId, bundleInfoGetFlag),前提是应用属于企业设备管理场景并具备对应企业权限。

如果是普通上架应用,建议把方案调整为“按已知 bundleName 查询”或通过显式 Want/业务授权交互判断目标应用能力,不建议做全量枚举。

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


截至目前,暂未开放相关功能,鸿蒙主打一个隐私安全,用户第一为主,这种权限以及相关API在当前来说是不会开放的。

开发者您好,鸿蒙系统禁止了一些不必要的权限,包括获取用户的应用列表,因此鸿蒙并无API可以获取用户的应用列表。

学习了

谢谢大家学习到了鸿蒙社区越来越完善了竟然这么多人回我,

这个是不允许的。

由于应用列表涉及用户隐私,系统对接口的调用权限有严格限制,通常只能获取到当前应用自身的信息,

另外通过官方手册查看到BundleFlag可以获取到相关的应用信息,但些权限必须是要一些系统级应用才行,所以普通应用是获取不到的。

cke_1899.png

在HarnonyOS对外不在向开发者提供接口以获取用户的应用接口,

尊敬的开发者,您好,

设备上的已安装应用列表属于用户隐私数据,出于安全隐私考虑,HarmonyOS对外不提供接口获取设备上的已安装的应用列表。参考文档:是否支持获取用户手机上所有的App列表

这个占时没有办法,系统没有开放这个权限。

鸿蒙系统禁止了一些不必要的权限,包括获取用户的应用列表,因此鸿蒙并无API可以获取用户的应用列表。

在HarmonyOS NEXT中,通过@ohos.bundle.bundleManager模块的getAllBundleInfoqueryExtensionAbilityInfo等接口获取应用列表。需申请ohos.permission.GET_BUNDLE_INFO_PRIVILEGED(系统应用)或GET_BUNDLE_INFO权限,并声明bundleManager依赖。注意应用过滤规则,仅返回可见应用。

在API 24中,可用@kit.AbilityKitbundleManager.getAllApplicationInfo()获取应用列表。但此接口需要系统权限ohos.permission.GET_BUNDLE_INFO_PRIVILEGED,普通应用无法申请。

import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  const appInfos = bundleManager.getAllApplicationInfoSync(
    bundleManager.ApplicationFlag.GET_APPLICATION_INFO_DEFAULT,
    bundleManager.ApplicationInfoFlag.GET_APPLICATION_INFO_WITH_PERMISSION
  );
  appInfos.forEach(app => {
    console.info(`bundleName: ${app.bundleName}`);
  });
} catch (err) {
  const e = err as BusinessError;
  console.error(`code: ${e.code}, message: ${e.message}`);
}

需在module.json5中声明:

"requestPermissions": [
  { "name": "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED" }
]

该权限为系统级,非系统应用运行时会返回错误码201(权限拒绝)。因此,API 24下普通应用无法获取用户应用列表,这是系统隐私限制。

回到顶部