我有以下代码:
packageManager = getPackageManager();
List<PackageInfo> packageList = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
List<PackageInfo> installedapps = new ArrayList<PackageInfo>();
for(PackageInfo apps: packageList){
if(!isSystemPackage(apps)){
installedapps.add(apps);
}
}
Collections.sort(installedapps, new Comparator<PackageInfo>(){
public int compare(PackageInfo o1, PackageInfo o2) {
return o1.packageName.compareTo(o2.packageName);
}
});
apkList = (ListView) findViewById(R.id.listView);
apkList.setAdapter(new AppInfoAdapter(this, installedapps, packageManager));
installedapps是设备上所有应用程序减去系统应用程序的列表。我唯一想做的就是按字母顺序排序,不能弄清楚如何。
答案 0 :(得分:1)
根据我的理解,您希望按名称按字母顺序对PackageInfo
个对象列表进行排序。我会开始here。您要做的是为您调用的installedapps
的ArrayList创建自定义Comparator,然后使用Collections.sort(..)
进行排序。您应该用于排序的PackageInfo
的属性是p.packageName
,它是应用程序的完全限定名称(您可以使用正则表达式来隔离包名称的最后一部分)。隔离应用程序的化妆品属性的示例,您可以找到here。
答案 1 :(得分:0)
Android提供了一个ApplicationInfo.DisplayNameComparator,可用于排序
List<ApplicationInfo>