Есть ли способ изменить тему Android во время выполнения? - PullRequest
1 голос
/ 03 декабря 2009

Сейчас я работаю над изменением стиля темы Android во время выполнения, когда пользователь выбирает ресурс темы, необходимо изменить не только текущее приложение, но и все приложения, установленные на телефоне. Например, как вы меняете язык системы при настройке активности, так и язык всех приложений изменился. Я просто не могу понять, как Android Framework достигает этого, кто-нибудь знает что-нибудь об этом?

Пока я пытался использовать PackageManager, вот так:

    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;
    }

Это не сработает. Атрибут "тема" в ApplicationInfo доступен только для чтения?

1 Ответ

3 голосов
/ 15 марта 2010

Я не думаю, что это хорошая идея для исправления данных иностранных приложений. Вы не получите производные темы, должны быть обнаружены вновь установленные приложения и т. Д. В любом случае, для таких изменений вам, вероятно, понадобится рутованный телефон, так почему бы не перезаписать ресурсы темы по умолчанию, такие как Metamorph, и все эти пользовательские ПЗУ это делают? Конечно, лучшим решением было бы, если бы Android поддерживал настраиваемые темы по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...