Disallow buzz/beep/disturb changes for notifications with locked importance.
If mAppRow.lockedImportance (which comes from the whitelist config_nonBlockableNotificationPackages), don't allow sound, vibration, or override dnd to be changed. Bug: 38480212 Test: manually verified for now Change-Id: I04aa7f15f2480472ec6ee487472098e81ab3d99f
This commit is contained in:
@@ -175,6 +175,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
private void setupVibrate() {
|
private void setupVibrate() {
|
||||||
mVibrate = (RestrictedSwitchPreference) findPreference(KEY_VIBRATE);
|
mVibrate = (RestrictedSwitchPreference) findPreference(KEY_VIBRATE);
|
||||||
mVibrate.setDisabledByAdmin(mSuspendedAppsAdmin);
|
mVibrate.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
|
mVibrate.setEnabled(!(mAppRow.lockedImportance || mVibrate.isDisabledByAdmin()));
|
||||||
mVibrate.setChecked(mChannel.shouldVibrate());
|
mVibrate.setChecked(mChannel.shouldVibrate());
|
||||||
mVibrate.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
mVibrate.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -191,6 +192,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
private void setupRingtone() {
|
private void setupRingtone() {
|
||||||
mRingtone = (NotificationSoundPreference) findPreference(KEY_RINGTONE);
|
mRingtone = (NotificationSoundPreference) findPreference(KEY_RINGTONE);
|
||||||
mRingtone.setRingtone(mChannel.getSound());
|
mRingtone.setRingtone(mChannel.getSound());
|
||||||
|
mRingtone.setEnabled(!(mAppRow.lockedImportance));
|
||||||
mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
@@ -246,12 +248,15 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
channelArgs.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, true);
|
channelArgs.putBoolean(AppHeader.EXTRA_HIDE_INFO_BUTTON, true);
|
||||||
channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
|
channelArgs.putString(AppInfoBase.ARG_PACKAGE_NAME, mPkg);
|
||||||
channelArgs.putString(Settings.EXTRA_CHANNEL_ID, mChannel.getId());
|
channelArgs.putString(Settings.EXTRA_CHANNEL_ID, mChannel.getId());
|
||||||
|
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(),
|
Intent channelIntent = Utils.onBuildStartFragmentIntent(getActivity(),
|
||||||
ChannelImportanceSettings.class.getName(),
|
ChannelImportanceSettings.class.getName(),
|
||||||
channelArgs, null, R.string.notification_importance_title, null,
|
channelArgs, null, R.string.notification_importance_title, null,
|
||||||
false, getMetricsCategory());
|
false, getMetricsCategory());
|
||||||
mImportance.setIntent(channelIntent);
|
mImportance.setIntent(channelIntent);
|
||||||
mImportance.setEnabled(mSuspendedAppsAdmin == null);
|
}
|
||||||
mImportance.setSummary(getImportanceSummary(mChannel.getImportance()));
|
mImportance.setSummary(getImportanceSummary(mChannel.getImportance()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -293,6 +293,8 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
private void setupImportanceToggle() {
|
private void setupImportanceToggle() {
|
||||||
mImportanceToggle = (RestrictedSwitchPreference) findPreference(KEY_ALLOW_SOUND);
|
mImportanceToggle = (RestrictedSwitchPreference) findPreference(KEY_ALLOW_SOUND);
|
||||||
mImportanceToggle.setDisabledByAdmin(mSuspendedAppsAdmin);
|
mImportanceToggle.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
|
mImportanceToggle.setEnabled(!(mAppRow.lockedImportance
|
||||||
|
|| mImportanceToggle.isDisabledByAdmin()));
|
||||||
mImportanceToggle.setChecked(mChannel.getImportance() >= IMPORTANCE_DEFAULT
|
mImportanceToggle.setChecked(mChannel.getImportance() >= IMPORTANCE_DEFAULT
|
||||||
|| mChannel.getImportance() == IMPORTANCE_UNSPECIFIED);
|
|| mChannel.getImportance() == IMPORTANCE_UNSPECIFIED);
|
||||||
mImportanceToggle.setOnPreferenceChangeListener(
|
mImportanceToggle.setOnPreferenceChangeListener(
|
||||||
@@ -313,6 +315,7 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
|
|||||||
protected void setupPriorityPref(boolean priority) {
|
protected void setupPriorityPref(boolean priority) {
|
||||||
mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND);
|
mPriority = (RestrictedSwitchPreference) findPreference(KEY_BYPASS_DND);
|
||||||
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
|
mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
|
||||||
|
mPriority.setEnabled(!(mAppRow.lockedImportance || mPriority.isDisabledByAdmin()));
|
||||||
mPriority.setChecked(priority);
|
mPriority.setChecked(priority);
|
||||||
mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
mPriority.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user