diff --git a/api/current.txt b/api/current.txt index d54b7fd117085..55f3b4751e232 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5529,6 +5529,8 @@ package android.app { method public void enableCarMode(int); method public int getCurrentModeType(); method public int getNightMode(); + method public boolean isNightModeLocked(); + method public boolean isUiModeLocked(); method public void setNightMode(int); field public static java.lang.String ACTION_ENTER_CAR_MODE; field public static java.lang.String ACTION_ENTER_DESK_MODE; diff --git a/api/system-current.txt b/api/system-current.txt index 2ea5ebb5a2972..c50fe01050bb3 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -133,6 +133,7 @@ package android { field public static final java.lang.String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING"; field public static final java.lang.String MODIFY_AUDIO_SETTINGS = "android.permission.MODIFY_AUDIO_SETTINGS"; field public static final java.lang.String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS"; + field public static final java.lang.String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE"; field public static final java.lang.String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING"; field public static final java.lang.String MODIFY_PARENTAL_CONTROLS = "android.permission.MODIFY_PARENTAL_CONTROLS"; field public static final java.lang.String MODIFY_PHONE_STATE = "android.permission.MODIFY_PHONE_STATE"; @@ -5648,6 +5649,8 @@ package android.app { method public void enableCarMode(int); method public int getCurrentModeType(); method public int getNightMode(); + method public boolean isNightModeLocked(); + method public boolean isUiModeLocked(); method public void setNightMode(int); field public static java.lang.String ACTION_ENTER_CAR_MODE; field public static java.lang.String ACTION_ENTER_DESK_MODE; diff --git a/core/java/android/app/IUiModeManager.aidl b/core/java/android/app/IUiModeManager.aidl index 7e9873e5f2f27..cae54b6c0611f 100644 --- a/core/java/android/app/IUiModeManager.aidl +++ b/core/java/android/app/IUiModeManager.aidl @@ -51,4 +51,14 @@ interface IUiModeManager { * 2 for night, and 3 for automatic mode switching. */ int getNightMode(); + + /** + * Tells if UI mode is locked or not. + */ + boolean isUiModeLocked(); + + /** + * Tells if Night mode is locked or not. + */ + boolean isNightModeLocked(); } diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java index 0f6ce1227ca45..44164158c7b47 100644 --- a/core/java/android/app/UiModeManager.java +++ b/core/java/android/app/UiModeManager.java @@ -233,4 +233,35 @@ public class UiModeManager { } return -1; } + + /** + * @return If UI mode is locked or not. When UI mode is locked, calls to change UI mode + * like {@link #enableCarMode(int)} will silently fail. + */ + public boolean isUiModeLocked() { + if (mService != null) { + try { + return mService.isUiModeLocked(); + } catch (RemoteException e) { + Log.e(TAG, "isUiModeLocked: RemoteException", e); + } + } + return true; + } + + /** + * @return If Night mode is locked or not. When Night mode is locked, changing Night mode + * is only allowed to privileged system components and normal application's call + * to change Night mode using {@link #setNightMode(int)} will silently fail. + */ + public boolean isNightModeLocked() { + if (mService != null) { + try { + return mService.isNightModeLocked(); + } catch (RemoteException e) { + Log.e(TAG, "isNightModeLocked: RemoteException", e); + } + } + return true; + } } diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 2940f6c7fc10e..02d298eddfb27 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2712,6 +2712,13 @@ + + + diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index d9e04728badda..caa20dc454a04 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -716,6 +716,13 @@ true + + true + 1 + + false + + + false +