diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index fd199a411b9a8..2579e56d7d1a8 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -725,6 +725,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Behavior of Back button while in-call and screen on int mIncallBackBehavior; + // Whether system navigation keys are enabled + boolean mSystemNavigationKeysEnabled; + Display mDisplay; private int mDisplayRotation; @@ -989,6 +992,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { resolver.registerContentObserver(Settings.Global.getUriFor( Settings.Global.POLICY_CONTROL), false, this, UserHandle.USER_ALL); + resolver.registerContentObserver(Settings.Global.getUriFor( + Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED), false, this, + UserHandle.USER_ALL); updateSettings(); } @@ -2320,6 +2326,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR, Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR_DEFAULT, UserHandle.USER_CURRENT); + mSystemNavigationKeysEnabled = Settings.Secure.getIntForUser(resolver, + Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, + 0, UserHandle.USER_CURRENT) == 1; // Configure wake gesture. boolean wakeGestureEnabledSetting = Settings.Secure.getIntForUser(resolver, @@ -6309,7 +6318,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (event.getAction() == KeyEvent.ACTION_UP) { if (!mAccessibilityManager.isEnabled() || !mAccessibilityManager.sendFingerprintGesture(event.getKeyCode())) { - if (areSystemNavigationKeysEnabled()) { + if (mSystemNavigationKeysEnabled) { sendSystemKeyToStatusBarAsync(event.getKeyCode()); } } @@ -7807,11 +7816,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Global.THEATER_MODE_ON, 0) == 1; } - private boolean areSystemNavigationKeysEnabled() { - return Settings.Secure.getIntForUser(mContext.getContentResolver(), - Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0, UserHandle.USER_CURRENT) == 1; - } - @Override public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) { if (!mVibrator.hasVibrator()) {