如何通过编程方式获取Android设备的所有应用列表
获取Android设备全量应用(含系统应用、已卸载残留)的方法
分为普通用户操作和开发者代码实现两类场景:
普通用户无代码操作方案
- 查看当前已安装的所有应用(含系统应用):进入系统设置 → 应用管理/应用和通知 → 开启「显示系统进程/显示所有应用」开关,即可看到完整的当前安装应用列表。
- 查看已卸载应用的残留信息:
- 打开系统文件管理器,进入
Android/data、Android/obb目录,目录名称对应应用包名,和当前已安装应用比对后仍然存在的目录,就是已卸载应用的残留文件。 - 也可以打开应用商店的安装记录页面,查看本账号下该设备的历史安装应用记录,仅限从该应用商店下载安装过的应用。
- 打开系统文件管理器,进入
开发者代码实现方案
获取当前已安装的所有应用(含系统应用)
不需要额外特殊权限,直接调用PackageManager相关接口即可:
PackageManager packageManager = getApplicationContext().getPackageManager(); // 传入GET_META_DATA标志,获取全量应用信息 List<PackageInfo> installedPkgList = packageManager.getInstalledPackages(PackageManager.GET_META_DATA); for (PackageInfo packageInfo : installedPkgList) { // 应用名称 String appName = packageInfo.applicationInfo.loadLabel(packageManager).toString(); // 应用包名 String pkgName = packageInfo.packageName; // 判断是否为系统应用 boolean isSystemApp = (packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; }
获取已卸载应用的相关残留信息
方法1:扫描存储残留目录
Android 11及以上需要先申请MANAGE_EXTERNAL_STORAGE存储全量访问权限,扫描/sdcard/Android/data/、/sdcard/Android/obb/目录下的所有子目录,将目录名(即应用包名)和当前已安装的应用包名列表做比对,不存在的就是已卸载应用的残留目录。
方法2:查询系统使用统计记录
需要先引导用户开启「应用使用情况访问」权限,通过UsageStatsManager可以查询到历史安装过的应用使用记录,哪怕应用已经卸载:
// 需要先获取android.permission.PACKAGE_USAGE_STATS权限 UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); long start = 0L; // 从系统初始时间开始查询 long end = System.currentTimeMillis(); List<UsageStats> statsList = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, start, end); // 和当前已安装包名列表比对,不存在的即为已卸载应用
注意:Android 10及以上版本对第三方应用的权限限制较严格,非系统签名应用无法获取到完整的全量已卸载应用信息,只能拿到有权限访问的残留目录或者用户授权过的使用统计记录。
内容的提问来源于stack exchange,提问作者Sãìñt Khålïfã
相关产品推荐
相关产品推荐

