You can set the theme for your app, but I'm wondering if it's possible to find out which one is used by the device. Currently, my app uses Theme.AppCompat.Light
. I'd like to avoid changing the theme.
P.S. I've already tried to set it to Theme.DeviceDefault
and access its ID using reflection, but no luck so far.
try {
setTheme(android.R.style.Theme_DeviceDefault);
Class<Context> contextClass = Context.class;
Method getThemeMethod = contextClass.getMethod("getThemeResId");
getThemeMethod.setAccessible(true);
Log.d("Test", "" + getThemeMethod.invoke(this)); // Always returns 0
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA);
Log.d("Test", getResources().getResourceEntryName(packageInfo.applicationInfo.theme)); // Returns 'Theme.DeviceDefault'
} catch (Exception e) {
Log.d("Test", "exception", e);
}
int currentNightMode = getContext().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO:
// Night mode is not active on device
break;
case Configuration.UI_MODE_NIGHT_YES:
// Night mode is active on device
break;
}
This might help ContextThemeWrapper
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With