diff options
| -rwxr-xr-x | core/java/android/provider/Settings.java | 7 | ||||
| -rw-r--r-- | core/res/res/values/config.xml | 3 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/policy/PhoneWindowManager.java | 7 |
4 files changed, 19 insertions, 1 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 402f69414a03..5d3925d82f93 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9040,6 +9040,13 @@ public final class Settings { * @hide */ public static final String MAX_NOTIFICATION_ENQUEUE_RATE = "max_notification_enqueue_rate"; + + /** + * Whether SystemUI navigation keys is enabled. + * @hide + */ + public static final String SYSTEM_NAVIGATION_KEYS_ENABLED = + "system_navigation_keys_enabled"; } /** diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 5a46bfca2f29..78e6ed864ab4 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2495,4 +2495,7 @@ <!-- Flag indicating whether round icons should be parsed from the application manifest. --> <bool name="config_useRoundIcon">false</bool> + <!-- True if the device supports system navigation keys. --> + <bool name="config_supportSystemNavigationKeys">false</bool> + </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b5a53efcf7c3..6e937ff48ccc 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2620,4 +2620,7 @@ <java-symbol type="id" name="cross_task_transition" /> <java-symbol type="bool" name="config_useRoundIcon" /> + + <!-- For System navigation keys --> + <java-symbol type="bool" name="config_supportSystemNavigationKeys" /> </resources> diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 777b57d7570f..827d51cc4884 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -5856,7 +5856,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { */ private void interceptStatusBarKey(KeyEvent event) { final int e = event.getKeyCode(); - if (event.getAction() == KeyEvent.ACTION_UP) { + if (event.getAction() == KeyEvent.ACTION_UP && areSystemNavigationKeysEnabled()) { boolean doOpen = false; boolean doClose = false; doOpen = (e == KeyEvent.KEYCODE_FP_NAV_DOWN); @@ -7267,6 +7267,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1; } + private boolean areSystemNavigationKeysEnabled() { + return Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.SYSTEM_NAVIGATION_KEYS_ENABLED, 0) == 1; + } + @Override public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) { if (!mVibrator.hasVibrator()) { |