GFl*_*lam 8 sorting android install list
嗨,我按照下面的教程,成功列出了我的应用程序中所有已安装的应用程序.
然而,它没有按字母顺序列出它们,我无法弄清楚如何对它们进行排序.任何有关这方面的帮助将不胜感激.我尝试过这样的一些事情
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);
Run Code Online (Sandbox Code Playgroud)
但无法弄清楚如何将其应用于应用列表标题.感谢您对此的任何帮助
===编辑===
感谢您回复我做了以下操作,但排序错误.错误读取"类型集合中的方法排序(List,Comparator)不适用于参数(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;
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 13
当您查询Android以获取已安装的应用程序列表时,您将获得一个List<ApplicationInfo>.Android ApplicationInfo.DisplayNameComparator为这些提供:
Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(pm));
Run Code Online (Sandbox Code Playgroud)
(其中pm一个实例PackageManager).
| 归档时间: |
|
| 查看次数: |
3504 次 |
| 最近记录: |