Как установить темный режим для всего устройства для Android 10, 11, 12?

#android #android-darkmode

#Android #android-темный режим

Вопрос:

Я пытаюсь создать приложение, которое переключает темный режим (ночной режим) для всей системы. Не только для моего приложения. Я создаю и автоматизирую приложение, поэтому пользователь решает, что включить или отключить, одним касанием.

Чтобы активировать ночной режим, я делаю это:

 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.

Ответ №1:

Не похоже, что эти флаги оказывают какое-либо влияние на систему. Приложение настроек не использует их для переключения темного режима.
Метод, который вызывает приложение «Настройки», скрыт, поэтому у приложения нет законного способа вызвать его.
Я смог включить темный режим на Android 11, используя этот метод через отражение с библиотекой, чтобы обойти ограничения отражения.

Комментарии:

1. Спасибо. Но в документах указано «setNightMode: устанавливает общесистемный ночной режим».

2. Смотрите здесь: developer.android.com/reference/android/app /…

3. Возможно, тогда вам следует открыть проблему в Android issue tracker. Лично я не верю, что это когда-либо работало так, как описано.

4. Я тоже так думаю. Спасибо.

5. Не могли бы вы подробнее рассказать о том, как вы это сделали? Какая библиотека, compileSdk, может быть, фрагмент кода. Спасибо.

Ответ №2:

У Android offical есть образец DarkTheme.Но я не знаю, работает ли это

Комментарии:

1. В этом примере показано, как установить Темную тему для вашего собственного приложения. Я прошу изменить темный режим для всей системы.