API 24 需要先区分场景:普通三方应用没有面向用户已安装应用全量列表的开放接口。旧的 @ohos.bundle.getAllBundleInfo 已不建议使用,并且需要特权权限;GET_INSTALLED_BUNDLE_LIST 也属于系统应用权限范围,普通三方应用不能直接依赖它获取用户应用列表。
可用替代方案:
- 查询自身应用信息:使用 bundleManager.getBundleInfoForSelf(…)。
- 已知 bundleName 时查询指定应用:使用 bundleManager.getBundleInfo(bundleName, …);适合判断某个明确目标应用是否存在或读取其基础信息。
- 企业/MDM 管控场景:使用 enterprise.bundleManager.getInstalledBundleList(admin, accountId, bundleInfoGetFlag),前提是应用属于企业设备管理场景并具备对应企业权限。
如果是普通上架应用,建议把方案调整为“按已知 bundleName 查询”或通过显式 Want/业务授权交互判断目标应用能力,不建议做全量枚举。
更多关于HarmonyOS鸿蒙Next中如何获取到用户的应用列表?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
截至目前,暂未开放相关功能,鸿蒙主打一个隐私安全,用户第一为主,这种权限以及相关API在当前来说是不会开放的。
学习了
谢谢大家学习到了鸿蒙社区越来越完善了竟然这么多人回我,
这个是不允许的。
由于应用列表涉及用户隐私,系统对接口的调用权限有严格限制,通常只能获取到当前应用自身的信息,
另外通过官方手册查看到BundleFlag可以获取到相关的应用信息,但些权限必须是要一些系统级应用才行,所以普通应用是获取不到的。

在HarnonyOS对外不在向开发者提供接口以获取用户的应用接口,
尊敬的开发者,您好,
设备上的已安装应用列表属于用户隐私数据,出于安全隐私考虑,HarmonyOS对外不提供接口获取设备上的已安装的应用列表。参考文档:是否支持获取用户手机上所有的App列表
这个占时没有办法,系统没有开放这个权限。
鸿蒙系统禁止了一些不必要的权限,包括获取用户的应用列表,因此鸿蒙并无API可以获取用户的应用列表。
在HarmonyOS NEXT中,通过@ohos.bundle.bundleManager模块的getAllBundleInfo或queryExtensionAbilityInfo等接口获取应用列表。需申请ohos.permission.GET_BUNDLE_INFO_PRIVILEGED(系统应用)或GET_BUNDLE_INFO权限,并声明bundleManager依赖。注意应用过滤规则,仅返回可见应用。
在API 24中,可用@kit.AbilityKit的bundleManager.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下普通应用无法获取用户应用列表,这是系统隐私限制。

