我正在努力在运行时更改android主题样式,当用户选择主题资源时,不仅要更新当前应用程序,还要更改手机上安装的所有应用程序。例如,就像您在设置活动中更改系统语言一样,然后所有应用程序的语言都会更改。我只是无法弄清楚Android框架是如何实现这一点的,任何人都对此有所了解吗?
当我尝试使用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中的attribure“主题”是只读的吗?
答案 0 :(得分:3)
我认为修补国外应用数据并不是一个好主意。您不会获得派生主题,必须检测新安装的应用程序等。 你可能需要一个root用户手机来进行这样的改变,所以为什么不覆盖像Metamorph这样的默认主题资源和所有那些自定义ROM呢? 当然,最好的解决方案是Android首先支持可自定义的默认主题。