Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从列表视图中筛选出系统包_Android_List_Listview_Filter_System - Fatal编程技术网

Android 从列表视图中筛选出系统包

Android 从列表视图中筛选出系统包,android,list,listview,filter,system,Android,List,Listview,Filter,System,如何在列表中使用此方法从列表中筛选出系统包 我目前有以下方法: public static List<ApplicationInfo> getInstalledApplication(Context context) { PackageManager packageManager = context.getPackageManager(); List<ApplicationInfo> apps = packageManager.getInstalledA

如何在列表中使用此方法从列表中筛选出系统包

我目前有以下方法:

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

这将过滤掉系统包:

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;
}
公共静态列表getInstalledApplication(上下文){
PackageManager PackageManager=context.getPackageManager();
列表应用程序=packageManager.GetInstalledApplication(0);
Collections.sort(apps,新的ApplicationInfo.DisplayNameComparator(packageManager));
Iterator it=apps.Iterator();
while(it.hasNext()){
ApplicationInfo ai=it.next();
如果((ai.flags&ApplicationInfo.FLAG\u系统)!=0){
it.remove();
}
}
返回应用程序;
}

首先,三元运算符在那里是无用的。只需返回
((ri.activityInfo.applicationInfo.flags和applicationInfo.FLAG\u系统)!=0
。所以你有这个方法…很好。问题是…?但是我需要返回系统包,但要返回我的集合。排序方法比较器只知道如何根据你定义的顺序进行排序。为什么不发布你试图删除这些项的完整代码?
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;
}