La récupération des informations de l'application à partir du gestionnaire de package

Est-il possible de tirer une ApplicationInfo objet de la PackageManager? J'ai essayé beaucoup de différents types de méthodes pour parvenir à cela, mais en vain. Je suis actuellement en train de travailler sur la valeur par défaut d'android lanceur de l'écran d'Application (Tiroir) et souhaitez obtenir des informations sur le package spécifiquement à partir d'un nom de package. C'est pas à la couche application, mais à l'accumulation de la couche de la Launcher2 Application, la source. La version d'android que je travaille avec est 2.3.3 .

Voici ce que j'ai essayé:

ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);

Erreur:

Type mismatch: cannot convert from android.content.pm.ApplicationInfo to com.android.launcher2.ApplicationInfo

Ce n'est pas pour récupérer le package en cours d'exécution, mais TOUTES les applications sur le téléphone lui-même.

J'ai constaté que:

pack.getApplicationInfo(packageName, flags)

Ne renvoie pas la même ApplicationInfo objet que l'ApplicationInfo passée dans la fonction ci-dessous dans le AllApps2D.java:

public void addApps(ArrayList<ApplicationInfo> list)

Je suis en train de tirer la ApplicationInfo objet de l'emballage lui-même avec juste le nom.

La fonction en question est ci-dessous, que l'on trouve dans le code open source de AllApps2D.java (Launcher2 Dossier)

 private ArrayList<ApplicationInfo> mAllAppsList = new ArrayList<ApplicationInfo>();

 public void addApps(ArrayList<ApplicationInfo> list) {
        final int N = list.size();

        for (int i=0; i<N; i++) {
            final ApplicationInfo item = list.get(i);
            int index = Collections.binarySearch(mAllAppsList, item,
                    LauncherModel.APP_NAME_COMPARATOR);
            if (index < 0) {
                index = -(index+1);
            }
            mAllAppsList.add(index, item);
        }
        mAppsAdapter.notifyDataSetChanged();
    }

Mise à JOUR

Fondamentalement, ce que je suis en train de faire est de réorganiser l'agencement des icônes dans le lanceur avec un ordre personnalisé. Il serait idéal si je pouvais récupérer les informations nécessaires à cette par la PackageManager.

Pour ce que j'ai mis en place pour travailler, je dois être en mesure de tirer le MÊME
ApplicationInfo objet que l'AllApps2D code, qui est apparemment:

com.android.Launcher2.ApplicationInfo

Qui n'est pas le même que ce qui est retourné par:


ApplicationInfo item = pack.getApplicationInfo(package_list.get(i), PackageManager.GET_ACTIVITIES);

qui est:


android.content.pm.ApplicationInfo

Le code disponible pour le lanceur, et de la classe, je travaille avec est trouvé ici .

Aucune de ces techniques de travail DANS la launcher2 demande dans un délai de un android construire. Existe-il d'autres suggestions?

OriginalL'auteur JoxTraex | 2011-06-21