diff options
| -rw-r--r-- | services/core/java/com/android/server/UiModeManagerService.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 0eb3a8438ae3..59589cd26859 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -46,7 +46,9 @@ import android.os.ResultReceiver; import android.os.ServiceManager; import android.os.ShellCallback; import android.os.ShellCommand; +import android.os.SystemProperties; import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings.Secure; import android.service.dreams.Sandman; import android.service.vr.IVrManager; @@ -64,6 +66,7 @@ import com.android.server.twilight.TwilightState; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.Objects; final class UiModeManagerService extends SystemService { private static final String TAG = UiModeManager.class.getSimpleName(); @@ -71,6 +74,7 @@ final class UiModeManagerService extends SystemService { // Enable launching of applications when entering the dock. private static final boolean ENABLE_LAUNCH_DESK_DOCK_APP = true; + private static final String SYSTEM_PROPERTY_DEVICE_THEME = "persist.sys.theme"; final Object mLock = new Object(); private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED; @@ -330,8 +334,13 @@ final class UiModeManagerService extends SystemService { mNightMode = defaultNightMode; } - // false if night mode stayed the same, true otherwise. - return !(oldNightMode == mNightMode); + if (UserManager.get(context).isPrimaryUser()) { + final String newTheme = Integer.toString(mNightMode); + if (!Objects.equals(SystemProperties.get(SYSTEM_PROPERTY_DEVICE_THEME), mNightMode)) { + SystemProperties.set(SYSTEM_PROPERTY_DEVICE_THEME, newTheme); + } + } + return oldNightMode != mNightMode; } private final IUiModeManager.Stub mService = new IUiModeManager.Stub() { @@ -411,6 +420,11 @@ final class UiModeManagerService extends SystemService { try { synchronized (mLock) { if (mNightMode != mode) { + if (UserManager.get(getContext()).isPrimaryUser()) { + SystemProperties.set(SYSTEM_PROPERTY_DEVICE_THEME, + Integer.toString(mode)); + } + // Only persist setting if not in car mode if (!mCarModeEnabled) { Secure.putIntForUser(getContext().getContentResolver(), |