Como obter aplicativos instalados no Android e nenhum aplicativo do sistema?

Eu quero pegar todos os aplicativos que aparecem na tela do menu. Mas, agora eu só recebo os aplicativos instalados pelo usuário ou todos os aplicativos (incluindo o aplicativo do sistema).

Meu código atual é:

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

Com este código, posso obter os aplicativos instalados pelo usuário e, se eu comentar a instrução 'if', receberei os aplicativos do sistema.

Então, eu quero ter o usuário instalado aplicativos e aplicativos como contatos, galeria e assim por diante.

ATUALIZAR:

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

questionAnswers(4)

yourAnswerToTheQuestion