diff --git a/app/src/main/java/com/fox2code/mmm/MainApplication.java b/app/src/main/java/com/fox2code/mmm/MainApplication.java
index 75a5c21..5fbfea7 100644
--- a/app/src/main/java/com/fox2code/mmm/MainApplication.java
+++ b/app/src/main/java/com/fox2code/mmm/MainApplication.java
@@ -295,9 +295,20 @@ public class MainApplication extends FoxApplication
R.style.Theme_MagiskModuleManager_Light;
break;
}
+ // Handle force black theme
+ if (theme.equals("dark") && isForceBlackThemeEnabled()) {
+ // just black background
+ themeResId = monet ?
+ R.style.Theme_MagiskModuleManager_Monet_Black :
+ R.style.Theme_MagiskModuleManager_Black;
+ }
this.setManagerThemeResId(themeResId);
}
+ private boolean isForceBlackThemeEnabled() {
+ return getSharedPreferences().getBoolean("pref_force_black_theme", false);
+ }
+
@StyleRes
public int getManagerThemeResId() {
return managerThemeResId;
diff --git a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
index 8942565..ef0ee43 100644
--- a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
@@ -137,6 +137,20 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity {
}, 1);
return true;
});
+ // Force black theme - depends on themePreference being system or dark
+ SwitchPreferenceCompat forceBlackPreference = findPreference("pref_force_black_theme");
+ // Set invisible if theme is not dark or system
+ forceBlackPreference.setVisible(themePreference.getValue().equals("dark") ||
+ themePreference.getValue().equals("system"));
+ forceBlackPreference.setOnPreferenceChangeListener((preference, newValue) -> {
+ devModeStep = 0;
+ UiThreadHandler.handler.postDelayed(() -> {
+ MainApplication.getINSTANCE().updateTheme();
+ FoxActivity.getFoxActivity(this).setThemeRecreate(
+ MainApplication.getINSTANCE().getManagerThemeResId());
+ }, 1);
+ return true;
+ });
// Crash reporting
TwoStatePreference crashReportingPreference = findPreference("pref_crash_reporting");
if (!SentryMain.IS_SENTRY_INSTALLED) crashReportingPreference.setVisible(false);
diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml
index b70691e..e7fb75b 100644
--- a/app/src/main/res/values-v31/themes.xml
+++ b/app/src/main/res/values-v31/themes.xml
@@ -22,6 +22,16 @@
- @style/Widget.Material3.Chip.Choice.Dark
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 00b67da..82578a6 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -83,6 +83,16 @@
- @style/Widget.Material.Chip.Choice.Dark
+
+
+