<queries>
<!-- 查询所有启动器应用 -->
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
</queries>
getInstalledApplications方式获取的比较杂乱,有时无法获取第三方应用
建议使用queryIntentActivities
PackageManager pm = getPackageManager();
// List<ApplicationInfo> apps = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : resolveInfos) {
try {
ApplicationInfo appInfo = pm.getApplicationInfo(
resolveInfo.activityInfo.packageName, 0);
Drawable banner = appInfo.loadBanner(pm);
if( banner==null){
banner = appInfo.loadIcon(pm);
}
AppItem app = new AppItem(
appInfo.loadLabel(pm).toString(),
banner,
appInfo.packageName
);
appList.add(app);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}