[ANDROID] Comment récupérer la taille d'une application locale
stagiaire_1
Messages postés
18
Statut
Membre
-
scinarf Messages postés 1183 Statut Membre -
scinarf Messages postés 1183 Statut Membre -
Bonjour,
Je débute avec Java Android. Je cherche à récupérer la taille des applications installées sur mon AVD.
Voici le code que j'utilise actuellement :
Ce code me retourne la liste des informations de toutes les applications non-systèmes, donc que l'on peut désinstaller sans pour autant influencer le bon déroulement de l'émulateur.
Je souhaiterai récupérer la taille mémoire de chaque package, mais je ne trouve pas cet attribut dans la classe PackageInfo. J'ai aussi cherché sur la doc de PackageInfo mais je n'ai rien trouvé : https://developer.android.com/reference/android/content/pm/PackageInfo.html Existe t-il une autre classe qui puisse faire cela? Ou ais-je mal cherché dans les attributs?
En vous remerciant par avance.
Je débute avec Java Android. Je cherche à récupérer la taille des applications installées sur mon AVD.
Voici le code que j'utilise actuellement :
private ArrayList<HashMap<String, String>> getInstalledApps(boolean getSysPackages) {
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
PackageInfo p = packs.get(i);
if (((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true)
{
map = new HashMap<String, String>();
map.put("name", p.applicationInfo.loadLabel(getPackageManager()).toString());
map.put("packageName", p.packageName);
map.put("versionName", p.versionName);
map.put("versionCode", String.valueOf(p.versionCode));
map.put("installDate", millisToDate(p.firstInstallTime));
map.put("updateDate", millisToDate(p.lastUpdateTime));
map.put("img", String.valueOf(p.applicationInfo.icon));
list.add(map);
Log.d("", "Nom de l'application : " +
p.applicationInfo.loadLabel(getPackageManager()).toString() + "\n" +
"Nom du package : " + p.packageName + "\n" +
"Nom de la version : " + p.versionName + "\n" +
"Code de la version : " + String.valueOf(p.versionCode) + "\n" + "\n");
Log.d("",".");
}
}
return list;
}
Ce code me retourne la liste des informations de toutes les applications non-systèmes, donc que l'on peut désinstaller sans pour autant influencer le bon déroulement de l'émulateur.
Je souhaiterai récupérer la taille mémoire de chaque package, mais je ne trouve pas cet attribut dans la classe PackageInfo. J'ai aussi cherché sur la doc de PackageInfo mais je n'ai rien trouvé : https://developer.android.com/reference/android/content/pm/PackageInfo.html Existe t-il une autre classe qui puisse faire cela? Ou ais-je mal cherché dans les attributs?
En vous remerciant par avance.
A voir également:
- [ANDROID] Comment récupérer la taille d'une application locale
- Comment réduire la taille d'un fichier - Guide
- Comment supprimer une application préinstallée sur android - Guide
- Android recovery - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment recuperer une video sur youtube - Guide
1 réponse
Bonjour,
A ce jour, il n'est pas possible de récupérer la taille d'une package de manière conventionnelle, une méthode existe mais elle est déconseillée.
Voici le lien : https://stackoverflow.com/questions/1806286/getting-installed-app-size
De plus, pour utiliser cette technique, il vaut mieux avoir un bon niveau pour comprendre de quoi il retourne exactement.
Après on peut effectuer une modification dans votre code pour l'optimiser :
A la place de :
for(int i=0;i<packs.size();i++)
{
PackageInfo p = packs.get(i);
if (((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true)
....
...
}
Utilisez :
for( PackageInfo p : packs )
{
if (((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true)
....
...
}
Lire ceux-ci pour les optimisations sur les boucles : https://developer.android.com/training/articles/perf-tips.html
Pensez à définir un TAG dans votre programme à utiliser dans le Log pour récupérer ceux-ci sans chercher.
Genre : private final TAG = "MaListeApplication";
N'hésitez pas si vous avez d'autres questions, j'essaierai de vous répondre du mieux que je peux.
A ce jour, il n'est pas possible de récupérer la taille d'une package de manière conventionnelle, une méthode existe mais elle est déconseillée.
Voici le lien : https://stackoverflow.com/questions/1806286/getting-installed-app-size
De plus, pour utiliser cette technique, il vaut mieux avoir un bon niveau pour comprendre de quoi il retourne exactement.
Après on peut effectuer une modification dans votre code pour l'optimiser :
A la place de :
for(int i=0;i<packs.size();i++)
{
PackageInfo p = packs.get(i);
if (((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true)
....
...
}
Utilisez :
for( PackageInfo p : packs )
{
if (((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true)
....
...
}
Lire ceux-ci pour les optimisations sur les boucles : https://developer.android.com/training/articles/perf-tips.html
Pensez à définir un TAG dans votre programme à utiliser dans le Log pour récupérer ceux-ci sans chercher.
Genre : private final TAG = "MaListeApplication";
N'hésitez pas si vous avez d'autres questions, j'essaierai de vous répondre du mieux que je peux.