2

我正在尝试创建一个为整个系统切换暗模式(夜间模式)的应用程序。不只是为了我的应用程序。我正在创建和自动化应用程序,因此用户只需触摸即可决定启用什么或禁用什么。

要激活夜间模式,我这样做:

UiModeManager oUiModeManager = (UiModeManager) getApplicationContext().getSystemService(Context.UI_MODE_SERVICE);
oUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_YES); 

并停用我这样做:

UiModeManager oUiModeManager = (UiModeManager) getApplicationContext().getSystemService(Context.UI_MODE_SERVICE);
oUiModeManager.setNightMode(UiModeManager.MODE_NIGHT_NO); 

但什么也没有发生。暗模式不会被激活或停用。我尝试过使用 Android 10-Q、Android 11-R 和 Android 12-S 设备。那么,我应该如何解决这个问题?请记住,我需要切换整个系统的暗模式,而不仅仅是我的应用程序。谢谢

此处的问题跟踪器:https ://issuetracker.google.com/issues/173628055 但不是来自 Google Developers 的答案。

4

2 回答 2

1

这些标志似乎对系统没有任何影响。设置应用程序不使用它们来切换暗模式。
Settings 应用程序调用的方法是 hidden,因此应用程序没有合法的方法来调用它。
我能够使用此方法通过反射与库绕过反射限制,在 android 11 上打开暗模式。

于 2020-11-19T10:53:55.130 回答
0

Android 官方有一个示例DarkTheme。但我不知道它是否有效

于 2020-11-19T09:18:50.783 回答