我想得到一个已安装的应用程序的列表,但只有那些有一个图标和可启动的。我正在制作一个启动器应用程序,并使用这个:
private List<AppList> getInstalledApps() {
List<AppList> res = new ArrayList<AppList>();
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
if ((isSystemPackage(p) == false)) {
String appName = p.applicationInfo.loadLabel(getPackageManager()).toString();
Drawable icon = p.applicationInfo.loadIcon(getPackageManager());
String package_name = p.applicationInfo.packageName;
res.add(new AppList(appName, package_name, icon));
}
}
private boolean isSystemPackage(PackageInfo pkgInfo) {
return ((pkgInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) ? true : false;
}
问题是,要过滤掉不可启动的应用程序,我必须过滤掉系统应用程序,这不是最好的解决方案,因为它也会过滤掉这些应用程序:相机,日历,计算器等。
发布于 2018-12-04 15:03:17
您可以通过以下方式检查应用程序是否可启动
packageManager.getLaunchIntentForPackage(packageName) != null
对于图标,您可以检查是否
info.loadIcon(packageManager) != null
。
https://stackoverflow.com/questions/53607151
复制相似问题