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
This commit is contained in:
@@ -89,10 +89,8 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
mSettingsContentObserver.register(getContentResolver());
|
|
||||||
|
|
||||||
updateSwitchBarToggleSwitch();
|
updateSwitchBarToggleSwitch();
|
||||||
|
mSettingsContentObserver.register(getContentResolver());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -199,6 +197,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
private void updateSwitchBarToggleSwitch() {
|
private void updateSwitchBarToggleSwitch() {
|
||||||
final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
|
final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getPrefContext())
|
||||||
.contains(mComponentName);
|
.contains(mComponentName);
|
||||||
|
if (mSwitchBar.isChecked() == checked) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
mSwitchBar.setCheckedInternal(checked);
|
mSwitchBar.setCheckedInternal(checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
package com.android.settings.accessibility;
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
|
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.app.settings.SettingsEnums;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@@ -26,13 +28,11 @@ import android.provider.Settings;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Switch;
|
|
||||||
|
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.accessibility.AccessibilityUtil.State;
|
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
import com.android.settingslib.search.SearchIndexable;
|
import com.android.settingslib.search.SearchIndexable;
|
||||||
@@ -42,8 +42,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/** Settings page for color inversion. */
|
/** Settings page for color inversion. */
|
||||||
@SearchIndexable
|
@SearchIndexable
|
||||||
public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment
|
public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment {
|
||||||
implements SwitchBar.OnSwitchChangeListener {
|
|
||||||
|
|
||||||
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
|
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
|
||||||
private static final String CATEGORY_FOOTER_KEY = "color_inversion_footer_category";
|
private static final String CATEGORY_FOOTER_KEY = "color_inversion_footer_category";
|
||||||
@@ -58,7 +57,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
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
|
@Override
|
||||||
@@ -69,7 +68,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
@Override
|
@Override
|
||||||
protected void onRemoveSwitchBarToggleSwitch() {
|
protected void onRemoveSwitchBarToggleSwitch() {
|
||||||
super.onRemoveSwitchBarToggleSwitch();
|
super.onRemoveSwitchBarToggleSwitch();
|
||||||
mSwitchBar.removeOnSwitchChangeListener(this);
|
mToggleSwitch.setOnBeforeCheckedChangeListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -78,17 +77,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
R.string.accessibility_display_inversion_switch_title);
|
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
|
@Override
|
||||||
protected void onInstallSwitchBarToggleSwitch() {
|
protected void onInstallSwitchBarToggleSwitch() {
|
||||||
super.onInstallSwitchBarToggleSwitch();
|
super.onInstallSwitchBarToggleSwitch();
|
||||||
mSwitchBar.setCheckedInternal(
|
updateSwitchBarToggleSwitch();
|
||||||
Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON);
|
mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> {
|
||||||
mSwitchBar.addOnSwitchChangeListener(this);
|
onPreferenceToggled(mPreferenceKey, checked);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -101,9 +97,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) {
|
mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) {
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange, Uri uri) {
|
public void onChange(boolean selfChange, Uri uri) {
|
||||||
mSwitchBar.setCheckedInternal(
|
updateSwitchBarToggleSwitch();
|
||||||
Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF)
|
|
||||||
== State.ON);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return super.onCreateView(inflater, container, savedInstanceState);
|
return super.onCreateView(inflater, container, savedInstanceState);
|
||||||
@@ -123,6 +117,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
updateSwitchBarToggleSwitch();
|
||||||
mSettingsContentObserver.register(getContentResolver());
|
mSettingsContentObserver.register(getContentResolver());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,6 +133,14 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
|
|||||||
showDialog(DIALOG_ID_EDIT_SHORTCUT);
|
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 =
|
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider(R.xml.accessibility_color_inversion_settings);
|
new BaseSearchIndexProvider(R.xml.accessibility_color_inversion_settings);
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
package com.android.settings.accessibility;
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
|
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.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -28,14 +30,12 @@ import android.provider.Settings;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Switch;
|
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.accessibility.AccessibilityUtil.State;
|
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
@@ -47,8 +47,7 @@ import java.util.List;
|
|||||||
|
|
||||||
@SearchIndexable
|
@SearchIndexable
|
||||||
public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment
|
public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment
|
||||||
implements DaltonizerRadioButtonPreferenceController.OnChangeListener,
|
implements DaltonizerRadioButtonPreferenceController.OnChangeListener {
|
||||||
SwitchBar.OnSwitchChangeListener{
|
|
||||||
|
|
||||||
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED;
|
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED;
|
||||||
private static final String CATEGORY_FOOTER_KEY = "daltonizer_footer_category";
|
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) {
|
mSettingsContentObserver = new SettingsContentObserver(mHandler, enableServiceFeatureKeys) {
|
||||||
@Override
|
@Override
|
||||||
public void onChange(boolean selfChange, Uri uri) {
|
public void onChange(boolean selfChange, Uri uri) {
|
||||||
mSwitchBar.setCheckedInternal(
|
updateSwitchBarToggleSwitch();
|
||||||
Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF)
|
|
||||||
== State.ON);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return super.onCreateView(inflater, container, savedInstanceState);
|
return super.onCreateView(inflater, container, savedInstanceState);
|
||||||
@@ -109,7 +106,9 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
updateSwitchBarToggleSwitch();
|
||||||
mSettingsContentObserver.register(getContentResolver());
|
mSettingsContentObserver.register(getContentResolver());
|
||||||
|
|
||||||
for (AbstractPreferenceController controller :
|
for (AbstractPreferenceController controller :
|
||||||
buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) {
|
buildPreferenceControllers(getPrefContext(), getSettingsLifecycle())) {
|
||||||
((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(this);
|
((DaltonizerRadioButtonPreferenceController) controller).setOnChangeListener(this);
|
||||||
@@ -145,13 +144,13 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
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
|
@Override
|
||||||
protected void onRemoveSwitchBarToggleSwitch() {
|
protected void onRemoveSwitchBarToggleSwitch() {
|
||||||
super.onRemoveSwitchBarToggleSwitch();
|
super.onRemoveSwitchBarToggleSwitch();
|
||||||
mSwitchBar.removeOnSwitchChangeListener(this);
|
mToggleSwitch.setOnBeforeCheckedChangeListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -160,17 +159,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
|
|||||||
R.string.accessibility_daltonizer_master_switch_title);
|
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
|
@Override
|
||||||
protected void onInstallSwitchBarToggleSwitch() {
|
protected void onInstallSwitchBarToggleSwitch() {
|
||||||
super.onInstallSwitchBarToggleSwitch();
|
super.onInstallSwitchBarToggleSwitch();
|
||||||
mSwitchBar.setCheckedInternal(
|
updateSwitchBarToggleSwitch();
|
||||||
Settings.Secure.getInt(getContentResolver(), ENABLED, State.OFF) == State.ON);
|
mToggleSwitch.setOnBeforeCheckedChangeListener((toggleSwitch, checked) -> {
|
||||||
mSwitchBar.addOnSwitchChangeListener(this);
|
onPreferenceToggled(mPreferenceKey, checked);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -179,6 +175,14 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
|
|||||||
showDialog(DialogEnums.EDIT_SHORTCUT);
|
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 =
|
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings);
|
new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user