鸿蒙Next如何读取已安装应用列表

在鸿蒙Next系统下,如何通过代码获取当前设备上已安装的应用列表?需要哪些权限或API接口?能否提供一个简单的示例代码?

2 回复

鸿蒙Next里想偷窥手机装了啥?用@ohos.bundle.bundleManager这个“间谍工具包”,调用getAllApplicationInfo()就能把应用列表一网打尽!记得先在配置文件里声明ohos.permission.GET_BUNDLE_INFO_PRIVILEGED权限,否则系统会对你露出慈父般的微笑:“想都别想!”(代码版:BundleManager.getAllApplicationInfo())

更多关于鸿蒙Next如何读取已安装应用列表的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS NEXT)中,读取已安装应用列表可以通过BundleManagerApplicationInfo来实现。以下是具体步骤和示例代码:

步骤说明:

  1. 获取BundleManager实例:通过系统服务获取应用包管理对象。
  2. 查询应用列表:调用getAllApplicationInfo()方法获取所有应用信息。
  3. 处理权限:需要申请ohos.permission.GET_BUNDLE_INFO权限(仅查询应用基础信息时可能不需要,但具体取决于访问的数据)。

示例代码:

import bundleManager from '@ohos.bundle.bundleManager';
import { BusinessError } from '@ohos.base';

// 获取已安装应用列表
async function getInstalledApps(): Promise<bundleManager.ApplicationInfo[]> {
  try {
    // 获取BundleManager实例
    let bundleMgr = bundleManager.getBundleManagerForSelf();
    
    // 查询所有应用信息(参数0表示获取所有用户的应用)
    let appInfos: bundleManager.ApplicationInfo[] = await bundleMgr.getAllApplicationInfo(0);
    
    console.log(`应用数量: ${appInfos.length}`);
    return appInfos;
  } catch (error) {
    console.error(`获取应用列表失败: ${(error as BusinessError).message}`);
    return [];
  }
}

// 使用示例
getInstalledApps().then((appList) => {
  appList.forEach((app, index) => {
    console.log(`应用${index + 1}: ${app.name} [包名: ${app.bundleName}]`);
  });
});

关键对象说明:

  • ApplicationInfo:包含应用名称、包名、图标等基本信息。
  • 权限配置:在module.json5中添加权限(如果需要详细数据):
    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.GET_BUNDLE_INFO"
          }
        ]
      }
    }
    

注意事项:

  • 该方法返回当前设备上所有已安装应用(包括系统应用)。
  • 实际开发中建议异步调用并处理可能出现的异常。
  • 根据应用的具体信息需求,可能还需要其他权限或使用BundleInfo获取更详细数据。

通过以上代码即可在鸿蒙Next中读取已安装应用列表并获取基础信息。

回到顶部