我已使用以下代码获取已安装应用的列表:
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);
}
只有一个问题:它仅列出具有MAIN活动的应用。 如何获取所有已安装应用的列表? 请注意,我在需要List为ResolveInfo的项目中使用此代码,因此请仅回答返回ResolveInfo列表的代码。
答案 0 :(得分:9)
您是否尝试过:
List<ApplicationInfo> packages = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
(找到here)
答案 1 :(得分:4)
你的问题没有意义;你提出了一些不合理的要求。您说您想要所有已安装应用的列表,但您还需要List
个ResolveInfo
个对象。 docs of ResolveInfo
将其描述为:
解析针对IntentFilter的意图返回的信息。
应用和IntentFilter
不会一对一关联。您希望ResolveInfo
个对象包含什么?如果一个包有多个,你想要哪一个?
PackageManager
确实包含方法getInstalledApplications
,但它返回List
个ApplicationInfo
个对象,这种类型的查询更合适。同样,还有一个getInstalledPackages
方法可以返回List
个PackageInfo
个对象。