diff options
| -rw-r--r-- | data/etc/privapp-permissions-platform.xml | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/UiModeManagerService.java | 20 |
2 files changed, 15 insertions, 7 deletions
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index 238afd4d42e1..f1941fcd2598 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -266,6 +266,8 @@ applications that come with the platform </privapp-permissions> <privapp-permissions package="com.android.shell"> + <!-- Needed for test only --> + <permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/> <permission name="android.permission.ACCESS_LOWPAN_STATE"/> <permission name="android.permission.BACKUP"/> <permission name="android.permission.BATTERY_STATS"/> diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index 5bec7a3f4a39..2091c2a0c694 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -551,16 +551,13 @@ final class UiModeManagerService extends SystemService { if (mNightMode == UiModeManager.MODE_NIGHT_AUTO) { unregisterScreenOffEvent(); } - // Only persist setting if not in car mode - if (!mCarModeEnabled) { - Secure.putIntForUser(getContext().getContentResolver(), - Secure.UI_NIGHT_MODE, mode, user); - Secure.putIntForUser(getContext().getContentResolver(), - OVERRIDE_NIGHT_MODE, mNightModeOverride, user); - } mNightMode = mode; mNightModeOverride = mode; + // Only persist setting if not in car mode + if (!mCarModeEnabled) { + persistNightMode(user); + } // on screen off will update configuration instead if (mNightMode != UiModeManager.MODE_NIGHT_AUTO || mCar) { updateLocked(0, 0); @@ -610,6 +607,7 @@ final class UiModeManagerService extends SystemService { @Override public boolean setNightModeActivated(boolean active) { synchronized (mLock) { + final int user = UserHandle.getCallingUserId(); final long ident = Binder.clearCallingIdentity(); try { if (mNightMode == UiModeManager.MODE_NIGHT_AUTO) { @@ -625,6 +623,7 @@ final class UiModeManagerService extends SystemService { } updateConfigurationLocked(); applyConfigurationExternallyLocked(); + persistNightMode(user); return true; } finally { Binder.restoreCallingIdentity(ident); @@ -834,6 +833,13 @@ final class UiModeManagerService extends SystemService { } } + private void persistNightMode(int user) { + Secure.putIntForUser(getContext().getContentResolver(), + Secure.UI_NIGHT_MODE, mNightMode, user); + Secure.putIntForUser(getContext().getContentResolver(), + OVERRIDE_NIGHT_MODE, mNightModeOverride, user); + } + private void updateConfigurationLocked() { int uiMode = mDefaultUiModeType; if (mUiModeLocked) { |