Привет, я выполнил приведенное ниже руководство и успешно перечислил все мои установленные приложения в моем приложении.
Список всех установленных приложений в стиле
Однако он не перечисляет их в алфавитном порядке, и я не могу понять, как их отсортировать так, чтобы они были. Любая помощь в этом будет принята с благодарностью. Я пробовал несколько подобных вещей
class IgnoreCaseComparator implements Comparator {
public int compare(String strA, String strB) {
return strA.compareToIgnoreCase(strB);
}
}
IgnoreCaseComparator icc = new IgnoreCaseComparator();
java.util.Collections.sort(SomeArrayList,icc);
, но не могу понять, как применить это к заголовкам списков приложений. Спасибо за любую помощь с этим
=== EDIT ===
Спасибо за ответ. Я сделал следующее, но при сортировке произошла ошибка. Ошибка гласит: «Метод sort (List, Comparator) в типе Collections не применим для аргументов (List, ApplicationInfo.DisplayNameComparator)»
private List loadInstalledApps(boolean includeSysApps) {
List apps = new ArrayList();
PackageManager packageManager = getPackageManager();
List packs = packageManager.getInstalledPackages(0);
for(int i=0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
ApplicationInfo a = p.applicationInfo;
if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
continue;
}
App app = new App();
app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
app.setPackageName(p.packageName);
app.setVersionName(p.versionName);
app.setVersionCode(p.versionCode);
CharSequence description = p.applicationInfo.loadDescription(packageManager);
app.setDescription(description != null ? description.toString() : "");
apps.add(app);
}
Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
return apps;
}