diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d97244a2b9d0e..2992076dcbc27 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -8514,6 +8514,12 @@ public final class Settings {
public static final String SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED =
"swipe_bottom_to_notification_enabled";
+ /**
+ * Controls whether One-Handed mode is currently activated.
+ * @hide
+ */
+ public static final String ONE_HANDED_MODE_ACTIVATED = "one_handed_mode_activated";
+
/**
* For user preference if One-Handed Mode enabled.
* @hide
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index ae6dcfdc2817b..1bba12ff7fa6a 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -430,6 +430,7 @@ message SecureSettingsProto {
optional SettingProto one_handed_mode_enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto one_handed_mode_timeout = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto taps_app_to_exit = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto one_handed_mode_activated = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional OneHanded onehanded = 80;
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index fbb84fdfcedcc..ccbcb8920de37 100644
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -256,4 +256,7 @@
1
+
+ false
+
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index 72fb23797f0dd..1cfdff8e24ed2 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -173,6 +173,7 @@ public class SecureSettings {
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS,
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
+ Settings.Secure.ONE_HANDED_MODE_ACTIVATED,
Settings.Secure.ONE_HANDED_MODE_ENABLED,
Settings.Secure.ONE_HANDED_MODE_TIMEOUT,
Settings.Secure.TAPS_APP_TO_EXIT,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 4872aa4820fff..36f5dba613557 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -262,6 +262,7 @@ public class SecureSettingsValidators {
VALIDATORS.put(
Secure.ACCESSIBILITY_BUTTON_TARGETS,
ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR);
+ VALIDATORS.put(Secure.ONE_HANDED_MODE_ACTIVATED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ONE_HANDED_MODE_ENABLED, BOOLEAN_VALIDATOR);
VALIDATORS.put(Secure.ONE_HANDED_MODE_TIMEOUT, ANY_INTEGER_VALIDATOR);
VALIDATORS.put(Secure.TAPS_APP_TO_EXIT, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 2e90d369a8838..941f47f525510 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -3401,7 +3401,7 @@ public class SettingsProvider extends ContentProvider {
}
private final class UpgradeController {
- private static final int SETTINGS_VERSION = 201;
+ private static final int SETTINGS_VERSION = 202;
private final int mUserId;
@@ -4959,6 +4959,22 @@ public class SettingsProvider extends ContentProvider {
currentVersion = 201;
}
+ if (currentVersion == 201) {
+ // Version 201: Set the default value for Secure Settings:
+ final SettingsState secureSettings = getSecureSettingsLocked(userId);
+ final Setting oneHandedModeActivated = secureSettings.getSettingLocked(
+ Secure.ONE_HANDED_MODE_ACTIVATED);
+ if (oneHandedModeActivated.isNull()) {
+ final boolean defOneHandedModeActivated = getContext().getResources()
+ .getBoolean(R.bool.def_one_handed_mode_activated);
+ secureSettings.insertSettingLocked(
+ Secure.ONE_HANDED_MODE_ACTIVATED,
+ defOneHandedModeActivated ? "1" : "0", null, true,
+ SettingsState.SYSTEM_PACKAGE_NAME);
+ }
+ currentVersion = 202;
+ }
+
// vXXX: Add new settings above this point.
if (currentVersion != newVersion) {