From c833d2e11da2dce3ffe361f75d82816ceb0e8a59 Mon Sep 17 00:00:00 2001 From: Ricky Wai Date: Thu, 19 May 2022 14:04:29 +0000 Subject: [PATCH] Do not update enabled state when app ops is not changed Only update it when app ops state is changed, as the preference is possibly disabled by other components already. Bug: 222677960 Test: "Sensitive Notification" grey out works Test: Enhanced confirmation flow for accessibility works Change-Id: I4930ede5de1bfe7594d4f9c6aa5fbd468528a313 --- .../com/android/settingslib/RestrictedPreferenceHelper.java | 6 ++---- .../com/android/settingslib/RestrictedSwitchPreference.java | 6 ++++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java index 2f30baa79b9de..cb8e7e8bb6ef7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java @@ -198,10 +198,9 @@ public class RestrictedPreferenceHelper { if (mDisabledByAdmin != disabled) { mDisabledByAdmin = disabled; changed = true; + updateDisabledState(); } - updateDisabledState(); - return changed; } @@ -210,10 +209,9 @@ public class RestrictedPreferenceHelper { if (mDisabledByAppOps != disabled) { mDisabledByAppOps = disabled; changed = true; + updateDisabledState(); } - updateDisabledState(); - return changed; } diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java index e6160bb9896d1..b5e4fa38d2442 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java @@ -254,9 +254,11 @@ public class RestrictedSwitchPreference extends SwitchPreference { final boolean ecmEnabled = getContext().getResources().getBoolean( com.android.internal.R.bool.config_enhancedConfirmationModeEnabled); final boolean appOpsAllowed = !ecmEnabled || mode == AppOpsManager.MODE_ALLOWED; - if (appOpsAllowed || isEnabled) { + if (isEnabled) { setEnabled(true); - } else { + } else if (appOpsAllowed && isDisabledByAppOps()) { + setEnabled(true); + } else if (!appOpsAllowed){ setDisabledByAppOps(true); } }