Как получить установленные приложения в Android и без системных приложений?

Я хочу, чтобы получить все приложения, которые появляются на экране меню. Но теперь я получаю только установленные пользователем приложения или все приложения (включая системное приложение).

Мой текущий код:

    final PackageManager pm = getActivity().getPackageManager();
    List<PackageInfo> apps = pm.getInstalledPackages(PackageManager.GET_META_DATA);

    ArrayList<PackageInfo> aux = new ArrayList<PackageInfo>();

    for (int i = 0; i < apps.size(); i++) {
        if (apps.get(i).versionName != null && ((apps.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 1)) {
            aux.add(apps.get(i)); 
        }

С помощью этого кода я могу получить установленные пользователем приложения, и если я прокомментирую инструкцию «если», я получу системные приложения.

Итак, я хочу, чтобы пользователь установил приложения и приложения, такие как контакты, галерея и так далее.

ОБНОВИТЬ:

    final PackageManager pm = getActivity().getPackageManager();
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> apps = pm.queryIntentActivities(intent, PackageManager.GET_META_DATA);

Ответы на вопрос(4)

Ваш ответ на вопрос