From 28e48fb772c32b8bff8fb3b829381f65a652c7c8 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 14 Jun 2019 14:53:09 -0400 Subject: [PATCH] Set persist.sys.theme based on darktheme persist.sys.theme="0", MODE_NIGHT_AUTO persist.sys.theme="1", MODE_NIGHT_NO persist.sys.theme="2", MODE_NIGHT_YES Test: manual Bug: 113028175 Change-Id: I9fe2516806ee5e652e84b7320019dbb84daf88a7 --- .../android/server/UiModeManagerService.java | 18 ++++++++++++++++-- 1 file 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 0eb3a8438ae3b..59589cd26859c 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(),