2009-12-03 3 views
1

Je travaille maintenant sur le changement de style de thème Android à l'exécution, lorsque l'utilisateur sélectionne une ressource de thème, non seulement l'application actuelle, mais aussi toutes les applications installées sur le téléphone doivent être changées. Par exemple, tout comme vous modifiez la langue du système lors de la définition de l'activité, la langue de toutes les applications a changé. Je ne peux pas comprendre comment le framework Android réalise cela, quelqu'un sait quelque chose à ce sujet?Existe-t-il un moyen de modifier le thème Android lors de l'exécution?

Alors que j'essayé d'utiliser PackageManager, comme ceci:

PackageManager manager = getPackageManager(); 
    List<ApplicationInfo> apps = manager 
      .getInstalledApplications(PackageManager.GET_META_DATA); 

    for (ApplicationInfo app : apps) { 
     app.theme=android.R.style.Theme_Light_NoTitleBar_Fullscreen; 
    } 

Il ne fonctionnera pas. L'attribut "theme" est-il en lecture seule dans ApplicationInfo?

Répondre

3

Je ne pense pas que ce soit une bonne idée de patcher des données d'applications étrangères. Vous n'auriez pas de thèmes dérivés, les applications nouvellement installées doivent être détectées, etc. De toute façon, vous auriez probablement besoin d'un téléphone rooté pour ces changements, alors pourquoi ne pas écraser les ressources thématiques par défaut comme Metamorph et toutes ces ROM personnalisées? Bien sûr, la meilleure solution serait si Android prend en charge les thèmes par défaut personnalisables en premier lieu.

Questions connexes