use*_*732 16 arrays android install list
嗨,我想得到用户设备上所有已安装的应用程序的列表,我一直在谷歌搜索最长的时间,但无法找到我想要的链接是最接近的,但工作正常除了我是新的不明白如何使用方法getPackages(); 并用它创建一个列表
http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon
任何关于如何创建实际列表的帮助将是一个主要的帮助我已经所有的代码已经无法获得列表实际显示感谢任何帮助
kco*_*ock 64
我最近在做这样的事情.我前面要说的一件事是确保在一个单独的线程中执行此操作 - 查询应用程序信息是否缓慢.以下内容将为您提供所有已安装应用程序的列表.这将包括许多您可能不感兴趣的系统应用程序.
PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(0);
Run Code Online (Sandbox Code Playgroud)
为了将其限制为仅用户安装或更新的系统应用程序(例如Maps,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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:此外,要获取应用程序的名称和图标(这可能是最长的 - 我没有对它进行任何真正的深入检查 - 使用此:
String label = (String)pm.getApplicationLabel(app);
Drawable icon = pm.getApplicationIcon(app);
Run Code Online (Sandbox Code Playgroud)
installedApps现在应该有您需要的完整应用程序列表.希望这会有所帮助,但您可能需要修改逻辑,具体取决于您需要返回的应用程序.再一次,它是缓慢的,但它只是你需要解决的问题.如果您经常访问某些数据缓存,则可能需要在数据库中构建数据缓存.