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
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez obtenir toutes les applications, faites ceci:
Des informations sur une seule application (étant donné que vous savez son manifeste, le nom du paquetage), se fait en ligne ce:
toutes les autres suggestions ? Je suis un peu coincé et ne savez pas comment gérer cela.
Ils sont absolument le même objet. Peut-être Launcher2 a sa propre classe nommée ApplicationInfo. Si si... bien, NE vous en servez PAS. Utiliser mon code, qui est explicitement important de la plate-forme android.contenu.pm.ApplicationInfo.
Voici une suggestion: arrêter de faire cela dans le Launcher2 code. Écrire une petite application de test qui fait cela. Je pense que vous en êtes la cause vous-même de la difficulté que vous essayez de faire des trucs dans une grande base de codage que vous ne comprenez pas.
Merci pour vos commentaires hackbod.
OriginalL'auteur hackbod
Le code ci-dessus utiliser pour obtenir toutes les informations au sujet de l'application installée dans l'appareil android comme version,le logo,le nom de l'application,le nom du paquet ,l'autorisation et toutes les thenk sur une application installée.
OriginalL'auteur DynamicMind