private List<AppICON> queryFilterAppInfo() {
PackageManager pm = this.getPackageManager();
// 查询所有已经安装的应用程序
List<ApplicationInfo> appInfos = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);// GET_UNINSTALLED_PACKAGES代表已删除,但还有安装目录的
// 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<AppICON> applicationInfos = new ArrayList<>(); //AppICON 是我自己写的实体类 你们自己随意
// 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
List<ResolveInfo> resolveinfoList = getPackageManager()
.queryIntentActivities(resolveIntent, 0);
Set<String> allowPackages = new HashSet();
for (ResolveInfo resolveInfo : resolveinfoList) {
allowPackages.add(resolveInfo.activityInfo.packageName);
}
for (ApplicationInfo app : appInfos) {
if (allowPackages.contains(app.packageName)) {
AppICON appICON = new AppICON();
appICON.setIcon(app.loadIcon(pm));
appICON.setPname(app.packageName);
appICON.setApp_name(app.loadLabel(pm).toString());
applicationInfos.add(appICON);
}
}
return applicationInfos;
}