I’ve pieced together the following to switch the color when dark mode (battery saver) is turned on or off. My questions are:
- Do I need to wrap this in an if statement to avoid errors on older devices (my
minSdkVersion
is 22)? - How can I run
updateDarkMode
on start? - How can I run
updateDarkMode
on resume?
Here’s what I have so far. This is a bit out of my comfort zone.
import android.content.res.Configuration;
import android.view.Window;
import com.getcapacitor.BridgeActivity;
import android.graphics.Color;
import android.os.Bundle;
public class MainActivity extends BridgeActivity {
@Override
public void onConfigurationChanged(Configuration configuration) {
super.onConfigurationChanged(configuration);
this.updateDarkMode(configuration);
}
private void updateDarkMode(Configuration configuration) {
Window window = getWindow();
String light = "#ffffff";
String dark = "#222222";
int currentNightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO -> {
window.setNavigationBarColor(Color.parseColor(light));
}
case Configuration.UI_MODE_NIGHT_YES -> {
window.setNavigationBarColor(Color.parseColor(dark));
}
}
}
}