2012-07-23 38 views
-1

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

我现在有这个方法了:

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; 
} 
+0

首先,三元那里的操作员没用。只需返回'((ri.activityInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)!= 0'。所以你有这种方法...很好。问题是...? – LuxuryMode 2012-07-23 18:31:17

+0

但我需要返回系统包,但与我的collections.sort方法 – dythe 2012-07-23 18:36:20

+0

一个比较器只知道如何根据您定义的顺序进行排序。为什么不发布完整的代码以便如何删除这些项目? – LuxuryMode 2012-07-23 18:38:12

回答

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; 
} 
+0

Thanks!That works! – dythe 2012-07-23 19:11:55