有没有办法在运行时更改android主题?

有没有办法在运行时更改android主题?,android,themes,Android,Themes,我现在正致力于在运行时更改android主题样式,当用户选择一个主题资源时,不仅要更改当前的应用程序,还要更改手机上安装的所有应用程序。例如,就像在“设置活动”中更改系统语言一样,所有应用程序的语言都会更改。我只是不明白Android框架是如何做到这一点的,有人知道这一点吗 当我尝试使用PackageManager时,如下所示: PackageManager manager = getPackageManager(); List<ApplicationInfo> ap

我现在正致力于在运行时更改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;
    }
PackageManager=getPackageManager();
列表应用程序=管理器
.GetInstalledApplication(PackageManager.GET_元数据);
用于(应用程序信息应用程序:应用程序){
app.theme=android.R.style.theme\u Light\u NoTitleBar\u全屏;
}

这行不通。ApplicationInfo中的属性“主题”是只读的吗?

我认为修补外国应用程序的数据不是一个好主意。你不会得到衍生主题,新安装的应用程序必须被检测到,等等。 无论如何,您可能需要一个根手机来进行这样的更改,那么为什么不覆盖默认的主题资源,比如变态和所有这些自定义ROM呢? 当然,最好的解决方案是,如果Android首先支持可定制的默认主题