diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java index 95c0bf63906..3ae0bfaee51 100644 --- a/src/com/android/settings/notification/ChannelNotificationSettings.java +++ b/src/com/android/settings/notification/ChannelNotificationSettings.java @@ -214,6 +214,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { private void setupVibrate() { mVibrate = (RestrictedSwitchPreference) findPreference(KEY_VIBRATE); mVibrate.setDisabledByAdmin(mSuspendedAppsAdmin); + mVibrate.setEnabled(!(mAppRow.lockedImportance || mVibrate.isDisabledByAdmin())); mVibrate.setChecked(mChannel.shouldVibrate()); mVibrate.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override @@ -230,6 +231,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { private void setupRingtone() { mRingtone = (NotificationSoundPreference) findPreference(KEY_RINGTONE); mRingtone.setRingtone(mChannel.getSound()); + mRingtone.setEnabled(!(mAppRow.lockedImportance)); mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -285,12 +287,15 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { channelArgs.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, true); channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg); channelArgs.putString(Settings.EXTRA_CHANNEL_ID, mChannel.getId()); - Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(), - ChannelImportanceSettings.class.getName(), - channelArgs, null, R.string.notification_importance_title, null, - false, getMetricsCategory()); - mImportance.setIntent(channelIntent); - mImportance.setEnabled(mSuspendedAppsAdmin == null); + mImportance.setEnabled(mSuspendedAppsAdmin == null && !mAppRow.lockedImportance); + // Set up intent to show importance selection only if this setting is enabled. + if (mImportance.isEnabled()) { + Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(), + ChannelImportanceSettings.class.getName(), + channelArgs, null, R.string.notification_importance_title, null, + false, getMetricsCategory()); + mImportance.setIntent(channelIntent); + } mImportance.setSummary(getImportanceSummary(mChannel.getImportance())); } diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java index bfa93557a62..4f715ca1f05 100644 --- a/src/com/android/settings/notification/NotificationSettingsBase.java +++ b/src/com/android/settings/notification/NotificationSettingsBase.java @@ -293,6 +293,8 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen private void setupImportanceToggle() { mImportanceToggle = (RestrictedSwitchPreference) findPreference(KEY_ALLOW_SOUND); mImportanceToggle.setDisabledByAdmin(mSuspendedAppsAdmin); + mImportanceToggle.setEnabled(!(mAppRow.lockedImportance + || mImportanceToggle.isDisabledByAdmin())); mImportanceToggle.setChecked(mChannel.getImportance() >= IMPORTANCE_DEFAULT || mChannel.getImportance() == IMPORTANCE_UNSPECIFIED); mImportanceToggle.setOnPreferenceChangeListener( @@ -313,6 +315,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen protected void setupPriorityPref(boolean priority) { mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND); mPriority.setDisabledByAdmin(mSuspendedAppsAdmin); + mPriority.setEnabled(!(mAppRow.lockedImportance || mPriority.isDisabledByAdmin())); mPriority.setChecked(priority); mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override