Xin chào Tôi đã làm theo hướng dẫn dưới đây và liệt kê thành công tất cả các ứng dụng đã cài đặt trong ứng dụng của tôi.Tạo danh sách các ứng dụng đã cài đặt
List all installed apps in style
Tuy nhiên nó không liệt kê chúng theo thứ tự abc và tôi không thể tìm ra cách để sắp xếp chúng để họ có. Bất kỳ sự giúp đỡ này sẽ được đánh giá rất nhiều. Tôi đã thử một vài điều như thế này
class IgnoreCaseComparator implements Comparator<String> {
public int compare(String strA, String strB) {
return strA.compareToIgnoreCase(strB);
}
}
IgnoreCaseComparator icc = new IgnoreCaseComparator();
java.util.Collections.sort(SomeArrayList,icc);
Nhưng không thể tìm ra cách áp dụng nó vào tiêu đề danh sách ứng dụng. Cảm ơn bạn cho bất kỳ sự giúp đỡ với điều này
=== EDIT ===
Cảm ơn bạn đã trả lời tôi đã làm như sau nhưng có một lỗi trên phân loại. Các lỗi đọc "Phương pháp loại (Danh sách, Comparator) trong bộ sưu tập loại không áp dụng cho các đối số (List, ApplicationInfo.DisplayNameComparator)"
private List<App> loadInstalledApps(boolean includeSysApps) {
List<App> apps = new ArrayList<App>();
PackageManager packageManager = getPackageManager();
List<PackageInfo> 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;
}
tôi đã chỉnh sửa ở trên nhưng có lỗi. Trong lớp học của tôi, tôi không có bất cứ điều gì về List chỉ cần liệt kê chúng có giống nhau không? –
GFlam
Điều này giải quyết được hai vấn đề tôi gặp phải với trình tải ứng dụng AsyncTask của mình. Cảm ơn. –
@GFlam nếu bạn muốn sắp xếp PackageInfo thay vì ApplicationInfo, vui lòng xem câu trả lời của tôi ở đây: https://stackoverflow.com/a/47198817/997940 –