Aller au contenu

Recommended Posts

Posté(e) (modifié)

Salut le peuple.

Je voulais savoir comment récupérer l'icône d'une tâche en cours d'exécution.

J'utilise ce code ( en partie repris sur le net):

        List allTasks = activityManager.getRunningTasks(30); 

         for (ActivityManager.RunningTaskInfo aTask : allTasks) { 

              Prog aProg = new Prog();
              aProg.setProgName(aTask.baseActivity.getClassName());
              aProg.setProgBmp(aTask.thumbnail);
              ProgList.add(aProg);
         } 

Je suis étonné que quand j'affiche ma liste, j'ai le nom correct, mais pas l'icone.

Me serais-je trompé quelquepart?

Modifié par Profete162
Posté(e) (modifié)

Je me doutais que tu allais intervenir, j'ai même failli mettre ton nom dans le message...

Pas de soucis, tu as assez de concurrence comme cela et je ne suis pas assez bon pour vous égaler!!.... J'ai plus original... :-D

Je suis pas le seul à me poser la question: http://www.mail-archive.com/android-developers@googlegroups.com/msg21135.html

Modifié par Profete162
Posté(e) (modifié)

quand j'écris:

Drawable test= PackageManager.getApplicationIcon("blabla");

il me dit gentillement

Cannot make a static reference to the non-static method getApplicationIcon(String) from the type PackageManager

Ja capte pas trop car je n'ai rien de statique dans mon programme!

C'est un nouveau projet et j'ai mis cette ligne dans le onCreate...

Modifié par Profete162
Posté(e)

nan mais faut quand même apprendre à programmer....je te file le lien de la fonction t'es pas obligé de copier coller ....

public abstract Drawable getApplicationIcon (ApplicationInfo info)

ou t'as vu qu'elle était statique cette fonction ?

Il faut instancier un PackageManager....j'aurais pu te filer TOUT le code mais bon c'est pas pédagogique...

Posté(e) (modifié)

Effectivement.. pas facile à deviner comment utiliser les classe on trouve dans la doc, lesquelles il faut instantier etc...

Ce n'est pas évident qu'il faut faire un PackageManager blabla =getPackageManager();

Si ca te parait évident parceque tu fais X années de programmation et que tu maitrises tes programmes, ce n'est pas le cas de tout le monde!

Enfin, je prefere que tu me laisse chercher en me donnant une piste, au moins je suis certain d'être dans la bonne direction. Ca m'évite de chercher 6-7 heures dans une classe/une fonction qui est totalement à coté de la plaque

Enfin bon, j'ai trouvé la réponse et je la partage pour ceux qui en auraient besoin:

List allTasks = activityManager.getRunningTasks(30); 

       PackageManager monPackageManager =getPackageManager();

       int i = 1; 
         // Loop through all tasks returned. 
         for (ActivityManager.RunningTaskInfo aTask : allTasks) { 



              Drawable monIcone=null;
           try {
               monIcone= monPakageManager.getApplicationIcon(aTask.baseActivity.getPackageName());
           } catch (NameNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

Modifié par Profete162
Posté(e)

Tu n'as pas besoin de connaitre par coeur le SDK pour savoir utiliser toutes les fonctions, juste savoir chercher au bon endroit ! ;)

Dès que tu as un problème de ce type ("Comment j'utilise cette fonction ?"), je te conseil de regarder dans les exemples du SDK.

Il y a exactement ce que tu cherche dans l'exemple "API Demo".

Les sources d'android sont aussi bonnes pour trouver des trucs un peu + poussées (Les sources de toutes les appli de base comme le home par exemple).

Posté(e) (modifié)

Ce n'est pas évident qu'il faut faire un PackageManager blabla =getPackageManager();

heu ..... première ligne en haut de la doc sur PackageManager:

Class for retrieving various kinds of information related to the application packages that are currently installed on the device. You can find this class through getPackageManager().

plus simple à trouver je vois pas....

Modifié par popolbx
Posté(e)

"tu peux trouver cette classe au travers de getpackagemanager()"...

Cela ne veut pas dire qu'il faut le faire avant appeler le get avant.. enfin soit...

Pour moi, quand on a quelquechose d'important à dire on met:

"you should call getpackagemaneger() before" ou quelquechose du genre! Franchement, tu as vu le nombre d'infos sur une page de la doc?

C'est mortel à lire! ( ici effectivement, c'est au debut, ce qui est chose rare)

Posté(e)
"tu peux trouver cette classe au travers de getpackagemanager()"...

Cela ne veut pas dire qu'il faut le faire avant appeler le get avant.. enfin soit...

Pour moi, quand on a quelquechose d'important à dire on met:

"you should call getpackagemaneger() before" ou quelquechose du genre! Franchement, tu as vu le nombre d'infos sur une page de la doc?

C'est mortel à lire! ( ici effectivement, c'est au debut, ce qui est chose rare)

Bah ouais c'est un SDK quoi

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...