diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java index 41f98014535..e9f8cafa8ba 100644 --- a/src/com/android/settings/notification/ChannelNotificationSettings.java +++ b/src/com/android/settings/notification/ChannelNotificationSettings.java @@ -365,17 +365,17 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { } else { setVisible(mAdvanced, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); setVisible(mImportance, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); - setVisible(mLights, checkCanBeVisible( + setVisible(mAdvanced, mLights, checkCanBeVisible( NotificationManager.IMPORTANCE_DEFAULT) && canPulseLight()); setVisible(mVibrate, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)); setVisible(mRingtone, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT)); } - setVisible(mBadge, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); - setVisible(mPriority, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) + setVisible(mAdvanced, mBadge, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); + setVisible(mAdvanced, mPriority, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT) || (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) && mDndVisualEffectsSuppressed)); - setVisible(mVisibilityOverride, checkCanBeVisible(NotificationManager.IMPORTANCE_LOW) - && isLockScreenSecure()); + setVisible(mAdvanced, mVisibilityOverride, isLockScreenSecure() + &&checkCanBeVisible(NotificationManager.IMPORTANCE_LOW)); setVisible(mBlockedDesc, mChannel.getImportance() == IMPORTANCE_NONE); if (mAppLink != null) { setVisible(mAppLink, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN)); diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java index 8c70a20e966..92169cdbefd 100644 --- a/src/com/android/settings/notification/NotificationSettingsBase.java +++ b/src/com/android/settings/notification/NotificationSettingsBase.java @@ -205,12 +205,16 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen } protected void setVisible(Preference p, boolean visible) { - final boolean isVisible = getPreferenceScreen().findPreference(p.getKey()) != null; + setVisible(getPreferenceScreen(), p, visible); + } + + protected void setVisible(PreferenceGroup parent, Preference p, boolean visible) { + final boolean isVisible = parent.findPreference(p.getKey()) != null; if (isVisible == visible) return; if (visible) { - getPreferenceScreen().addPreference(p); + parent.addPreference(p); } else { - getPreferenceScreen().removePreference(p); + parent.removePreference(p); } }