我正在开发一个应用程序,我想向用户展示所有已安装的应用程序,让他/她选择一个然后用它做一些事情。尽管我遇到了一些问题,但我遵循了一个教程(此:http: //impressive-artworx.de/2011/list-all-installed-apps-in-style/ )。遵循教程后,我只获得了未预装的应用程序(如所有无法启动的后台应用程序),如果您想要用户从 Play 商店下载的应用程序,这非常有用。问题是在我的应用程序中,我想显示可启动的系统应用程序,如 Youtube 和浏览器,而不是不可启动的系统应用程序,如 Search Application Provider。
这是我在获取应用程序时使用的代码:
private List<App> loadInstalledApps(boolean includeSysApps) {
List<App> apps = new ArrayList<App>();
// the package manager contains the information about all installed apps
PackageManager packageManager = getPackageManager();
List<PackageInfo> packs = packageManager.getInstalledPackages(0); //PackageManager.GET_META_DATA
for(int i=0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
ApplicationInfo a = p.applicationInfo;
App app = new App();
app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
app.setPackageName(p.packageName);
app.setVersionName(p.versionName);
app.setVersionCode(p.versionCode);
CharSequence description = p.applicationInfo.loadDescription(packageManager);
app.setDescription(description != null ? description.toString() : "");
apps.add(app);
}
return apps;
}
现在我的问题是;过滤掉不可启动的应用程序的最佳方法是什么?
任何帮助表示赞赏!