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
This commit is contained in:
Stanley Wang
2021-06-08 20:34:55 +08:00
parent 603cd6c44c
commit fab609f892

View File

@@ -49,7 +49,6 @@ import android.view.accessibility.AccessibilityManager;
import android.widget.Switch; import android.widget.Switch;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.preference.Preference;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R; import com.android.settings.R;
@@ -232,14 +231,18 @@ public class ToggleAccessibilityServicePreferenceFragment extends
@Override @Override
protected void updateSwitchBarToggleSwitch() { protected void updateSwitchBarToggleSwitch() {
final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext()) final boolean checked = isAccessibilityServiceEnabled();
.contains(mComponentName);
if (mToggleServiceSwitchPreference.isChecked() == checked) { if (mToggleServiceSwitchPreference.isChecked() == checked) {
return; return;
} }
mToggleServiceSwitchPreference.setChecked(checked); 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 * Return whether the device is encrypted with legacy full disk encryption. Newer devices
* should be using File Based Encryption. * should be using File Based Encryption.
@@ -314,7 +317,6 @@ public class ToggleAccessibilityServicePreferenceFragment extends
} }
private void handleConfirmServiceEnabled(boolean confirmed) { private void handleConfirmServiceEnabled(boolean confirmed) {
mToggleServiceSwitchPreference.setChecked(confirmed);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, confirmed);
onPreferenceToggled(mPreferenceKey, confirmed); onPreferenceToggled(mPreferenceKey, confirmed);
} }
@@ -338,8 +340,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
@Override @Override
public void onSwitchChanged(Switch switchView, boolean isChecked) { public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != mToggleServiceSwitchPreference.isChecked()) { if (isChecked != isAccessibilityServiceEnabled()) {
onPreferenceClick(mToggleServiceSwitchPreference); onPreferenceClick(isChecked);
} }
} }
@@ -533,14 +535,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
mDialog.dismiss(); mDialog.dismiss();
} }
private boolean onPreferenceClick(Preference preference) { private boolean onPreferenceClick(boolean isChecked) {
boolean checked = ((SettingsMainSwitchPreference) preference).isChecked(); if (isChecked) {
if (checked) {
mToggleServiceSwitchPreference.setChecked(true);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
/* enableService */ true);
showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE);
} else {
mToggleServiceSwitchPreference.setChecked(false); mToggleServiceSwitchPreference.setChecked(false);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
/* disableService */ false); /* disableService */ false);
@@ -552,6 +548,11 @@ public class ToggleAccessibilityServicePreferenceFragment extends
showPopupDialog(DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL); showPopupDialog(DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL);
} }
} }
} else {
mToggleServiceSwitchPreference.setChecked(true);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED,
/* enableService */ true);
showDialog(DialogEnums.DISABLE_WARNING_FROM_TOGGLE);
} }
return true; return true;
} }