0

官方在 Android 10 中提供深色主题,但实际上,例如在 Android 9 MIUI 11 中提供深色主题。有没有办法以编程方式检查 OS 深色主题是否可用?我试图通过该Configuration#uiMode字段进行检查:

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;
}

但它不起作用,对于 Android 5 它返回true

4

1 回答 1

0

是的,您可以通过以下代码进行检查

  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;

编辑

我已经使用下面的代码添加了他们如下。

  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;
于 2019-12-19T11:57:51.507 回答