Oficjalnie ciemny motyw jest dostępny w Androidzie 10, ale w rzeczywistości ciemny motyw dostępny na przykład w Androidzie 9 MIUI 11. Czy istnieje sposób, aby programowo sprawdzić, czy ciemny motyw systemu operacyjnego jest dostępny, czy nie? Próbowałem to sprawdzić przez Configuration#uiMode pole:

public boolean isSystemDarkAllowed() {
    final Configuration configuration = context.getResources().getConfiguration();
    final int nightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
    return nightMode != Configuration.UI_MODE_NIGHT_UNDEFINED;
}

Ale nie działa, w przypadku Androida 5 zwraca true

0
Alexey Nikitin 19 grudzień 2019, 14:12
 – 
Nik
19 grudzień 2019, 15:01
Nie, wiem, jak rozpoznać motyw (noc lub ciemno). Potrzebuję odpowiedzi jak wykryć możliwość OS dla ciemnego motywu
 – 
Alexey Nikitin
19 grudzień 2019, 20:30

1 odpowiedź

Tak, możesz to sprawdzić za pomocą poniższego kodu

  switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
       case Configuration.UI_MODE_NIGHT_YES:
           Log.v("BaseActivity","THEME_DARK");
           break;
       case Configuration.UI_MODE_NIGHT_NO:
          Log.v("BaseActivity","THEME_LIGHT");
          break;

Edytuj

Dodałem jak poniżej, używając poniższego kodu.

  switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
        case Configuration.UI_MODE_NIGHT_YES:
            Log.v("BaseActivity","THEME_DARK");
            setTheme(R.style.AppTheme_Dark);
            Consts.currentTheme=Consts.THEME_DARK;
            break;
        case Configuration.UI_MODE_NIGHT_NO:
            Log.v("BaseActivity","THEME_LIGHT");
            setTheme(R.style.AppTheme);
            Consts.currentTheme=Consts.THEME_LIGHT;
            break;
0
yuvrajsinh 19 grudzień 2019, 15:00
Nie, nie, wiem o tym, ale muszę wiedzieć o możliwości ciemnego motywu systemu operacyjnego. Na przykład dla systemu Android 10 jest on domyślnie dostępny, niektóre urządzenia z systemem Android 9 również go akceptują, ale wszystkie urządzenia z systemem Android KitKat nie mogą skonfigurować ciemnego motywu we wszystkich interfejsach użytkownika systemu operacyjnego
 – 
Alexey Nikitin
19 grudzień 2019, 14:59