Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fab609f8 authored by Stanley Wang's avatar Stanley Wang
Browse files

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
parent 603cd6c4
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -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;
    }