From 420036710b6a99c27d73bea9cb9bdf68625cb508 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Fri, 16 Jul 2021 18:46:09 +0800 Subject: [PATCH] Fix OHM H/W key shortcut dosn't work appropriately When one-handed mode disabled 1. Turn on the shortcut of the OHM with hold volume keys 2. Hold the volume keys Should trigger one-anded mode Due to S/W & H/W shortcut keys are mapping to different settings S/W : ACCESSIBILITY_BUTTON_TARGETS H/W : ACCESSIBILITY_SHORTCUT_TARGET_SERVICE We should check both status of the them. Bug: 193411296 Test: atest WMShellUnitTests Change-Id: I3994ab89fd6163c283969cc3175877e29b44c67a --- .../shell/onehanded/OneHandedSettingsUtil.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java index 5911f8d66b324..aa6961ad203aa 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java @@ -169,9 +169,22 @@ public final class OneHandedSettingsUtil { * @return true if user enabled one-handed shortcut in settings, false otherwise. */ public boolean getShortcutEnabled(ContentResolver resolver, int userId) { - final String targets = Settings.Secure.getStringForUser(resolver, + // Checks SOFTWARE_SHORTCUT_KEY + final String targetsSwKey = Settings.Secure.getStringForUser(resolver, Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, userId); - return TextUtils.isEmpty(targets) ? false : targets.contains(ONE_HANDED_MODE_TARGET_NAME); + if (!TextUtils.isEmpty(targetsSwKey) && targetsSwKey.contains( + ONE_HANDED_MODE_TARGET_NAME)) { + return true; + } + + // Checks HARDWARE_SHORTCUT_KEY + final String targetsHwKey = Settings.Secure.getStringForUser(resolver, + Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, userId); + if (!TextUtils.isEmpty(targetsHwKey) && targetsHwKey.contains( + ONE_HANDED_MODE_TARGET_NAME)) { + return true; + } + return false; } /**