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

Commit 1869e01f authored by menghanli's avatar menghanli
Browse files

Fix Startup fails when click "Color correction" of the selection menu in "Color correction" page

Setting provider observar is register onResume() and release of onPause().
The selection menu is activity-base dialog to cause the app does not to monitor the value change.

Bug: 148832544
Test: Manual test
Change-Id: I01354d5096c00ba39336e27aa45169d8768f8594
parent f38bff9e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -89,10 +89,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
    @Override
    public void onResume() {
        super.onResume();

        mSettingsContentObserver.register(getContentResolver());

        updateSwitchBarToggleSwitch();
        mSettingsContentObserver.register(getContentResolver());
    }

    @Override
@@ -199,6 +197,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends
    private void updateSwitchBarToggleSwitch() {
        final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
                .contains(mComponentName);
        if (mSwitchBar.isChecked() == checked) {
            return;
        }
        mSwitchBar.setCheckedInternal(checked);
    }

+20 −17
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;

import android.app.settings.SettingsEnums;
import android.net.Uri;
@@ -26,13 +28,11 @@ import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;

import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.State;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.SwitchBar;
import com.android.settingslib.search.SearchIndexable;
@@ -42,8 +42,7 @@ import java.util.List;

/** Settings page for color inversion. */
@SearchIndexable
public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment
        implements SwitchBar.OnSwitchChangeListener {
public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment {

    private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
    private static final String CATEGORY_FOOTER_KEY = "color_inversion_footer_category";
@@ -58,7 +57,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere

    @Override
    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? State.OFF : State.ON);
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF);
    }

    @Override
@@ -69,7 +68,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
    @Override
    protected void onRemoveSwitchBarToggleSwitch() {
        super.onRemoveSwitchBarToggleSwitch();
        mSwitchBar.removeOnSwitchChangeListener(this);
        mToggleSwitch.setOnBeforeCheckedChangeListener(null);
    }

    @Override
@@ -78,17 +77,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
                R.string.accessibility_display_inversion_switch_title);
    }

    @Override
    public void onSwitchChanged(Switch switchView, boolean isChecked) {
        Settings.Secure.putInt(getContentResolver(), ENABLED, isChecked ? State.ON : State.OFF);
    }

    @Override
    protected void onInstallSwitchBarToggleSwitch() {
        super.onInstallSwitchBarToggleSwitch();
        mSwitchBar.setCheckedInternal(
                Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON);
        mSwitchBar.addOnSwitchChangeListener(this);
        updateSwitchBarToggleSwitch();
        mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> {
            onPreferenceToggled(mPreferenceKey, checked);
            return false;
        });
    }

    @Override
@@ -101,9 +97,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
        mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) {
            @Override
            public void onChange(boolean selfChange, Uri uri) {
                mSwitchBar.setCheckedInternal(
                        Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF)
                                == State.ON);
                updateSwitchBarToggleSwitch();
            }
        };
        return super.onCreateView(inflater, container, savedInstanceState);
@@ -123,6 +117,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
    @Override
    public void onResume() {
        super.onResume();
        updateSwitchBarToggleSwitch();
        mSettingsContentObserver.register(getContentResolver());
    }

@@ -138,6 +133,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
        showDialog(DIALOG_ID_EDIT_SHORTCUT);
    }

    private void updateSwitchBarToggleSwitch() {
        final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
        if (mSwitchBar.isChecked() == checked) {
            return;
        }
        mSwitchBar.setCheckedInternal(checked);
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_color_inversion_settings);
}
+21 −17
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;

import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -28,14 +30,12 @@ import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Switch;

import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.State;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.widget.SwitchBar;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -47,8 +47,7 @@ import java.util.List;

@SearchIndexable
public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment
        implements DaltonizerRadioButtonPreferenceController.OnChangeListener,
        SwitchBar.OnSwitchChangeListener{
        implements DaltonizerRadioButtonPreferenceController.OnChangeListener {

    private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED;
    private static final String CATEGORY_FOOTER_KEY = "daltonizer_footer_category";
@@ -88,9 +87,7 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
        mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) {
            @Override
            public void onChange(boolean selfChange, Uri uri) {
                mSwitchBar.setCheckedInternal(
                        Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF)
                                == State.ON);
                updateSwitchBarToggleSwitch();
            }
        };
        return super.onCreateView(inflater, container, savedInstanceState);
@@ -109,7 +106,9 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
    @Override
    public void onResume() {
        super.onResume();
        updateSwitchBarToggleSwitch();
        mSettingsContentObserver.register(getContentResolver());

        for (AbstractPreferenceController controller :
                buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) {
            ((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(this);
@@ -145,13 +144,13 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe

    @Override
    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? State.OFF : State.ON);
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF);
    }

    @Override
    protected void onRemoveSwitchBarToggleSwitch() {
        super.onRemoveSwitchBarToggleSwitch();
        mSwitchBar.removeOnSwitchChangeListener(this);
        mToggleSwitch.setOnBeforeCheckedChangeListener(null);
    }

    @Override
@@ -160,17 +159,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
                R.string.accessibility_daltonizer_master_switch_title);
    }

    @Override
    public void onSwitchChanged(Switch switchView, boolean isChecked) {
        Settings.Secure.putInt(getContentResolver(), ENABLED, isChecked ? State.ON : State.OFF);
    }

    @Override
    protected void onInstallSwitchBarToggleSwitch() {
        super.onInstallSwitchBarToggleSwitch();
        mSwitchBar.setCheckedInternal(
                Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON);
        mSwitchBar.addOnSwitchChangeListener(this);
        updateSwitchBarToggleSwitch();
        mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> {
            onPreferenceToggled(mPreferenceKey, checked);
            return false;
        });
    }

    @Override
@@ -179,6 +175,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
        showDialog(DialogEnums.EDIT_SHORTCUT);
    }

    private void updateSwitchBarToggleSwitch() {
        final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
        if (mSwitchBar.isChecked() == checked) {
            return;
        }
        mSwitchBar.setCheckedInternal(checked);
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings);
}