From fab609f8921d45ad8533a701daf50549fba3b5dc Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Tue, 8 Jun 2021 20:34:55 +0800 Subject: [PATCH] Fix the problem of the TalkBack function can not be turned on. - Check the states of the switch and the accessibility service. If the states are different, update the state of accessibility service. Fix: 190309601 Test: robotest and test the TalkBack manually. Change-Id: Id8c28223b1958087e7cdc481348487376afa2203 --- ...ccessibilityServicePreferenceFragment.java | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 7902ec6c092..346b6ef3e51 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -49,7 +49,6 @@ import android.view.accessibility.AccessibilityManager; import android.widget.Switch; import androidx.annotation.Nullable; -import androidx.preference.Preference; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; @@ -232,14 +231,18 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override protected void updateSwitchBarToggleSwitch() { - final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext()) - .contains(mComponentName); + final boolean checked = isAccessibilityServiceEnabled(); if (mToggleServiceSwitchPreference.isChecked() == checked) { return; } mToggleServiceSwitchPreference.setChecked(checked); } + private boolean isAccessibilityServiceEnabled() { + return AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext()) + .contains(mComponentName); + } + /** * Return whether the device is encrypted with legacy full disk encryption. Newer devices * should be using File Based Encryption. @@ -314,7 +317,6 @@ public class ToggleAccessibilityServicePreferenceFragment extends } private void handleConfirmServiceEnabled(boolean confirmed) { - mToggleServiceSwitchPreference.setChecked(confirmed); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed); onPreferenceToggled(mPreferenceKey, confirmed); } @@ -338,8 +340,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { - if (isChecked != mToggleServiceSwitchPreference.isChecked()) { - onPreferenceClick(mToggleServiceSwitchPreference); + if (isChecked != isAccessibilityServiceEnabled()) { + onPreferenceClick(isChecked); } } @@ -533,14 +535,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends mDialog.dismiss(); } - private boolean onPreferenceClick(Preference preference) { - boolean checked = ((SettingsMainSwitchPreference) preference).isChecked(); - if (checked) { - mToggleServiceSwitchPreference.setChecked(true); - getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, - /* enableService */ true); - showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE); - } else { + private boolean onPreferenceClick(boolean isChecked) { + if (isChecked) { mToggleServiceSwitchPreference.setChecked(false); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, /* disableService */ false); @@ -552,6 +548,11 @@ public class ToggleAccessibilityServicePreferenceFragment extends showPopupDialog(DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL); } } + } else { + mToggleServiceSwitchPreference.setChecked(true); + getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, + /* enableService */ true); + showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE); } return true; }