Java 从getInstalled应用程序筛选SystemApp

Java 从getInstalled应用程序筛选SystemApp,java,android,Java,Android,我正在开发一个应用程序,其中我正在从系统中安装应用程序,并成功显示在listview中。每件事我都做得很成功。但现在它给我的系统应用程序,我也不想要。 系统应用程序如。。。浏览器,设置,闹钟这样我就不需要了。那么我该怎么过滤呢? 你能帮我解决这个问题吗 代码:: private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) { ArrayList<PInfo> res = new Arr

我正在开发一个应用程序,其中我正在从系统中安装应用程序,并成功显示在listview中。每件事我都做得很成功。但现在它给我的系统应用程序,我也不想要。 系统应用程序如。。。浏览器,设置,闹钟这样我就不需要了。那么我该怎么过滤呢? 你能帮我解决这个问题吗

代码::

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
        ArrayList<PInfo> res = new ArrayList<PInfo>();
        List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

        for (int i = 0; i < packs.size(); i++) {
            PackageInfo p = packs.get(i);
            // Fill PackageInfo
            if ((!getSysPackages) && (p.versionName == null)) {
                continue;
            }

            PInfo newInfo = new PInfo();
            newInfo.appname = p.applicationInfo.loadLabel(getPackageManager())
                    .toString();

            newInfo.pname = p.packageName;
            newInfo.versionName = p.versionName;
            newInfo.versionCode = p.versionCode;

            PackageManager pm = getPackageManager();

            ApplicationInfo appInfo;
            try {
                // Get all app information in Application info
                appInfo = pm.getApplicationInfo(newInfo.pname, 0);

                String appFile = appInfo.sourceDir;
                newInfo.size = String.valueOf(new File(appFile).length());

                long installed = new File(appFile).lastModified();
                newInfo.date = String.valueOf(installed);

                Date dtappdate = new Date(installed);
                newInfo.instdate = String.valueOf(dtappdate.toString());

            } catch (NameNotFoundException e) {
                e.printStackTrace();

            }catch (Exception e) {
                e.printStackTrace();
            }
            newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
            res.add(newInfo);
        }
        return res;
    }
private ArrayList getInstalledApps(布尔getSysPackages){
ArrayList res=新的ArrayList();
列表包=getPackageManager()。getInstalledPackages(0);
对于(int i=0;i
试试这个:

        PackageManager packageManager = getPackageManager();
        List<PackageInfo> packageList = packageManager.getInstalledPackages(0);
        for (PackageInfo pi : packageList) {
            ApplicationInfo ai = pi.applicationInfo;
            if ((ai.flags & ApplicationInfo.FLAG_SYSTEM) == 1){
                Log.d("APP_NAME", ai.loadLabel(packageManager).toString());
                Log.d("PACKAGE_NAME", pi.packageName);
                Log.d("APP_VERSION", pi.versionName);
            }
        }
PackageManager-PackageManager=getPackageManager();
List packageList=packageManager.getInstalledPackages(0);
for(PackageInfo pi:包装商){
ApplicationInfo ai=pi.ApplicationInfo;
if((ai.flags和ApplicationInfo.FLAG\u系统)==1){
Log.d(“APP_NAME”,ai.loadLabel(packageManager.toString());
Log.d(“包名称”,pi.packageName);
Log.d(“应用程序版本”,pi.versionName);
}
}

成功使用(ai.flags&ApplicationInfo.FLAG\u SYSTEM)==1)不是0请更改它,以便其他用户可以从中获得帮助