diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java index e7be62f996a..4cbe6926341 100644 --- a/src/com/android/settings/notification/AppNotificationSettings.java +++ b/src/com/android/settings/notification/AppNotificationSettings.java @@ -201,7 +201,8 @@ public class AppNotificationSettings extends NotificationSettingsBase { final NotificationChannel channel) { MasterSwitchPreference channelPref = new MasterSwitchPreference( getPrefContext()); - channelPref.setSwitchEnabled(mSuspendedAppsAdmin == null && !mAppRow.systemApp); + channelPref.setSwitchEnabled(mSuspendedAppsAdmin == null + && isChannelBlockable(mAppRow.systemApp, channel)); channelPref.setKey(channel.getId()); channelPref.setTitle(channel.getName()); channelPref.setChecked(channel.getImportance() != IMPORTANCE_NONE); diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java index f7bf1ca702e..6b4129cdd27 100644 --- a/src/com/android/settings/notification/ChannelNotificationSettings.java +++ b/src/com/android/settings/notification/ChannelNotificationSettings.java @@ -228,7 +228,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { mBlockBar.setKey(KEY_BLOCK); getPreferenceScreen().addPreference(mBlockBar); - if (mAppRow.systemApp && mChannel.getImportance() != NotificationManager.IMPORTANCE_NONE) { + if (!isChannelBlockable(mAppRow.systemApp, mChannel)) { setVisible(mBlockBar, false); } diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java index e055133f34e..fe426e7833b 100644 --- a/src/com/android/settings/notification/NotificationSettingsBase.java +++ b/src/com/android/settings/notification/NotificationSettingsBase.java @@ -443,4 +443,12 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen return lockscreenSecure; } + + protected boolean isChannelBlockable(boolean systemApp, NotificationChannel channel) { + if (!mAppRow.systemApp) { + return true; + } + return channel.isBlockableSystem() + || channel.getImportance() == NotificationManager.IMPORTANCE_NONE; + } }