2

Is there to a way to check the systems theme at run-time? (see image below) enter image description here

bb441db
  • 276
  • 1
  • 3
  • 11
  • This might be something that you are looking for. https://stackoverflow.com/a/59177156/2014374 – bpr10 Dec 14 '20 at 13:46

1 Answers1

1

EDIT/NOTE: Okay, I did some more research, as far as I know this is only a global setting on the OnePlus 6 (OxygenOs), did android P not get a dark mode after all?

So I figured out a hacky way to get this setting:

System settings are stored at: content://settings/system

On my device (OxygenOs 6.x.x) value for theme is stored at oem_black_mode.

To fetch this result we can execute the following command via adb:

adb shell content query --uri content://settings/system/oem_black_mode

this does not require the phone to be rooted.

I have created a simple wrapper for a content resolver (feel free to use/modify):

import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;

public class SystemSettingsResolver {

    public static final String OEM_BLACK_MODE = "oem_black_mode";
    public static final String OEM_BLACK_MODE_ACCENT_COLOR = "oem_black_mode_accent_color";
    public static final String OEM_BLACK_MODE_ACCENT_COLOR_INDEX = "oem_black_mode_accent_color_index";


    private Context context;

    public SystemSettingsResolver(Context context) {
        this.context = context;
    }

    public int getInt(String setting) {
        ContentResolver resolver = context.getContentResolver();
        try {
            return Settings.System.getInt(resolver, setting);
        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
        }
        return -1;
    }

    public String getString(String setting) {
        ContentResolver resolver = context.getContentResolver();
        return Settings.System.getString(resolver, setting);
    }

    // extend with getFloat etc whatever is required for your app.
}

And here is how to use this wrapper:

public int systemTheme() {
   /**
    * In my testing:
    * 0 = light
    * 1 = dark
    * 2 = default
   */
   SystemSettingsResolver resolver = SystemSettingsResolver(this); //pass context
   return resolver.getInt(SystemSettingsResolver.OEM_BLACK_MODE)
} 
bb441db
  • 276
  • 1
  • 3
  • 11