我现在正在尝试在运行时更改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中的属性“主题”是只读的吗?

最佳答案

我认为修补外部应用程序的数据不是一个好主意。您不会得到派生的主题,必须检测到新安装的应用程序,等等。
无论如何,您可能都需要有根电话才能进行此类更改,那么为什么不覆盖默认主题资源(如Metamorph),以及所有这些自定义ROM都可以呢?
当然,最好的解决方案是如果Android首先支持可自定义的默认主题。

08-18 11:47
查看更多