android - 获取已安装的安卓应用程序列表

标签 android arrays list installation

您好,我想获取用户设备上所有已安装应用程序的列表,我已经在谷歌上搜索了最长时间,但找不到我想要的内容,但这个链接是最接近的,并且工作正常,除了我是新手'不明白如何使用getPackages()方法;并用它创建一个列表

http://www.androidsnippets.com/get-installed-applications-with-name-package-name-version-and-icon

任何关于如何创建实际列表的帮助将是一个主要帮助我已经拥有所有代码只是无法让列表实际显示感谢任何帮助

最佳答案

我最近正在做类似的事情。我要预先说的一件事是确保并在单独的线程中执行此操作——查询应用程序信息很慢。以下将为您提供所有已安装应用程序的列表。这将包括很多您可能不感兴趣的系统应用程序。

PackageManager pm = getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(0);

为了将其限制为仅限用户安装或更新的系统应用程序(例如 map 、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 现在应该有您需要的应​​用程序的完整列表。希望这会有所帮助,但您可能需要根据需要返回的应用程序稍微修改逻辑。同样,它很慢,但这只是您必须解决的问题。如果您经常访问数据库,您可能希望在数据库中构建数据缓存。

关于android - 获取已安装的安卓应用程序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165023/

相关文章:

list - Mathematica - 初始化变量列表

list - 指定要通过json添加到列表中的项目数

java - 使用 BasicDBObject 从 JSON 字符串列表中获取键和值

c - 如果产品小于给定数字,则需要更快的算法来计数

JavaScript 函数 - 计算对象数组中某个值的出现次数

android - Android 许可的 IllegalArgumentException 错误

android - 在应用程序级别初始化 Fabric 和 Crashlytics 有什么缺点吗?

java - 从 Java 数组中获取输入变量

java.util.MissingFormatArgumentException : Format specifier: s

android - 在 Canvas 上绘制一个以触摸点为中心的矩形