From 2f2f0e982fcff5af4841223c079e617bdf9d8254 Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Fri, 8 Apr 2022 17:33:31 +0800 Subject: [PATCH] Write default accessibility service only when user enter into corresponding page. Based on ag/17463205, to help users not to mis-triggered volume-key-accessibility shortcut, we will only write default accessibility service when user enter into corresponding service page. Fix: 228562075 Fix: 226866175 Test: manual test -> 1. Do not enter into default config accessibility service page during setup wizard then finish setup wizard. 2. Observe settings value of shortcut targets. It should be null. Change-Id: I4f26598d646c8e6b312debd03eaaa9d2cd7010ea --- .../ToggleFeaturePreferenceFragment.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index fd1937620b7..a38b00ed870 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -157,7 +157,6 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference } } - setupDefaultShortcutIfNecessary(getPrefContext()); final int resId = getPreferenceScreenResId(); if (resId <= 0) { final PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen( @@ -226,6 +225,8 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference if (mNeedsQSTooltipReshow) { getView().post(this::showQuickSettingsTooltipIfNeeded); } + + writeDefaultShortcutTargetServiceToSettingsIfNeeded(getPrefContext()); } @Override @@ -788,8 +789,22 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference /** * Setups a configurable default if the setting has never been set. + * + * TODO(b/228562075): Remove this function when correcting the format in config file + * `config_defaultAccessibilityService`. */ - private static void setupDefaultShortcutIfNecessary(Context context) { + private void writeDefaultShortcutTargetServiceToSettingsIfNeeded(Context context) { + if (mComponentName == null) { + return; + } + + final ComponentName defaultService = ComponentName.unflattenFromString(context.getString( + com.android.internal.R.string.config_defaultAccessibilityService)); + // write default accessibility service only when user enter into corresponding page. + if (!mComponentName.equals(defaultService)) { + return; + } + final String targetKey = Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE; String targetString = Settings.Secure.getString(context.getContentResolver(), targetKey); if (!TextUtils.isEmpty(targetString)) {