您好,我想获取用户设备上所有已安装应用程序的列表,我已经在谷歌上搜索了很长时间,但找不到我想要的内容,但这个链接是最接近的,并且工作正常,除了我是新人不明白如何使用 getPackages() 方法;并用它创建一个列表
http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon
关于如何创建实际列表的任何帮助都将是一个主要帮助,我已经拥有所有代码,只是无法让列表真正显示对任何帮助的感谢
我最近正在做这样的事情。我首先要说的一件事是确保在单独的线程中执行此操作 - 查询应用程序信息很慢。以下将为您提供所有已安装应用程序的列表。这将包括许多您可能不感兴趣的系统应用程序。
PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(0);
为了将其限制为仅用户安装或更新的系统应用程序(例如地图、GMail 等),我使用了以下逻辑:
List<ApplicationInfo> installedApps = new ArrayList<ApplicationInfo>();
for(ApplicationInfo app : apps) {
//checks for flags; if flagged, check if updated system app
if((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
installedApps.add(app);
//it's a system app, not interested
} else if ((app.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
//Discard this one
//in this case, it should be a user-installed app
} else {
installedApps.add(app);
}
}
编辑:此外,要获取应用程序的名称和图标(这可能是花费最长的时间——我还没有对其进行任何真正的深入检查——请使用以下命令:
String label = (String)pm.getApplicationLabel(app);
Drawable icon = pm.getApplicationIcon(app);
现在,installedApps 应该有您需要的应用程序的完整列表。希望这会有所帮助,但您可能需要根据需要返回的应用程序稍微修改逻辑。再说一次,它很慢,但这只是你必须解决的问题。如果您经常访问数据库,您可能需要在数据库中构建数据缓存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)