diff --git a/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml b/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml
index 5fdf18b912..0329729a26 100644
--- a/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml
+++ b/examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml
@@ -23,7 +23,7 @@
-
diff --git a/extras/AudioPerformanceTest/Builds/Android/app/src/main/AndroidManifest.xml b/extras/AudioPerformanceTest/Builds/Android/app/src/main/AndroidManifest.xml
index 0dc5e12a83..3523d0064e 100644
--- a/extras/AudioPerformanceTest/Builds/Android/app/src/main/AndroidManifest.xml
+++ b/extras/AudioPerformanceTest/Builds/Android/app/src/main/AndroidManifest.xml
@@ -13,7 +13,7 @@
-
diff --git a/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml b/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml
index 600a0f9dff..3147df9bc9 100644
--- a/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml
+++ b/extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml
@@ -22,7 +22,7 @@
-
diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/src/main/AndroidManifest.xml b/extras/NetworkGraphicsDemo/Builds/Android/app/src/main/AndroidManifest.xml
index 498a2d9470..7516ee4947 100644
--- a/extras/NetworkGraphicsDemo/Builds/Android/app/src/main/AndroidManifest.xml
+++ b/extras/NetworkGraphicsDemo/Builds/Android/app/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
-
diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h
index 753f140523..2bcae85357 100644
--- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h
+++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h
@@ -1846,7 +1846,7 @@ private:
setAttributeIfNotPresent (*act, "android:name", getActivityClassString());
if (! act->hasAttribute ("android:configChanges"))
- act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout");
+ act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode");
if (androidScreenOrientation.get() != "unspecified")
{
diff --git a/modules/juce_gui_basics/native/juce_Windowing_android.cpp b/modules/juce_gui_basics/native/juce_Windowing_android.cpp
index da2befc2f9..29aa446cd5 100644
--- a/modules/juce_gui_basics/native/juce_Windowing_android.cpp
+++ b/modules/juce_gui_basics/native/juce_Windowing_android.cpp
@@ -2562,18 +2562,25 @@ public:
bool isDarkModeEnabled() const noexcept { return darkModeEnabled; }
- void onActivityStarted (jobject /*activity*/) override
+private:
+ void onActivityStarted (jobject) override
{
- const auto isEnabled = getDarkModeSetting();
-
- if (darkModeEnabled != isEnabled)
- {
- darkModeEnabled = isEnabled;
- Desktop::getInstance().darkModeChanged();
- }
+ updateMode();
+ }
+
+ void onActivityConfigurationChanged (jobject) override
+ {
+ updateMode();
+ }
+
+ void updateMode()
+ {
+ const auto current = getDarkModeSetting();
+
+ if (std::exchange (darkModeEnabled, current) != current)
+ Desktop::getInstance().darkModeChanged();
}
-private:
static bool getDarkModeSetting()
{
auto* env = getEnv();