安卓如何获取所有已安装应用程序列表

3

我使用以下代码获取了已安装应用程序的列表:

public List<ResolveInfo>() {
    PackageManager pm=getPackageManager();
    Intent main=new Intent(Intent.ACTION_MAIN, null);

    main.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);

}

存在一个问题:它只列出具有主要活动的应用程序。 如何获取所有已安装应用程序的列表? 请注意,我在需要List是ResolveInfo的项目中使用了此代码,请仅提供返回ResolveInfo列表的代码。

只有一个问题:它只列出具有主要活动的应用程序。如何获取所有已安装应用程序的列表?请注意,我在需要List是ResolveInfo的项目中使用了此代码,请仅提供返回ResolveInfo列表的代码。

1
好的,我没有给它投反对票,但首先,你想要的是不可能的。你不能以ResolveInfo对象的List形式获取已安装应用程序的列表。 - CommonsWare
你可能被踩是因为你最后一句话可能被解释为“给我代码”的请求,而不是“请帮我修改现有的代码”。我没有踩你,但如果我猜的话,可能是这个原因。 - jprofitt
2个回答

9
你尝试过这样做吗:
 List<ApplicationInfo> packages = pm
            .getInstalledApplications(PackageManager.GET_META_DATA);

(found here)


4
您的问题并不太合理;您提出了一个有点不合理的请求。您说您想要所有已安装应用程序的列表,但您还想要一个ResolveInfo对象的列表。 ResolveInfo的文档将其描述为:

解析IntentFilter时返回的信息。

应用程序和IntentFilter并不一一对应。您希望ResolveInfo对象包含什么?如果一个包中有多个,您想要哪一个? PackageManager确实包括一个getInstalledApplications方法,但它返回一个ApplicationInfo对象的列表,这是这种类型查询更合适的类型。同样,还有一个getInstalledPackages方法,它也返回一个PackageInfo对象的列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接