从ListView过滤掉系统包

时间:2012-07-23 18:22:51

标签: android list listview filter system

如何在列表中使用此方法从列表中过滤掉系统包?

我目前有这种方法:

public static List<ApplicationInfo> getInstalledApplication(Context context) {
    PackageManager packageManager = context.getPackageManager();

    List<ApplicationInfo> apps = packageManager.getInstalledApplications(0);
    Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
    return apps;
}

过滤掉系统包的方法:

private boolean isSystemPackage(ResolveInfo ri){
    return ((ri.activityInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)!=0)?true:false;
}

1 个答案:

答案 0 :(得分:3)

这将过滤掉系统包:

public static List<ApplicationInfo> getInstalledApplication(Context context) {
    PackageManager packageManager = context.getPackageManager();
    List<ApplicationInfo> apps = packageManager.getInstalledApplications(0);
    Collections.sort(apps, new ApplicationInfo.DisplayNameComparator(packageManager));
    Iterator<ApplicationInfo> it = apps.iterator();
    while (it.hasNext()) {
        ApplicationInfo ai = it.next();
        if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
            it.remove();
        }
    }
    return apps;
}