diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 1f5b99cb3349d..981e0f58ef2bb 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -940,13 +940,34 @@ public class ZenModeHelper { } } + private void applyCustomPolicy(ZenPolicy policy, ZenRule rule) { + if (rule.zenMode == NotificationManager.INTERRUPTION_FILTER_NONE) { + policy.apply(new ZenPolicy.Builder() + .disallowAllSounds() + .build()); + } else if (rule.zenMode + == NotificationManager.INTERRUPTION_FILTER_ALARMS) { + policy.apply(new ZenPolicy.Builder() + .disallowAllSounds() + .allowAlarms(true) + .allowMedia(true) + .build()); + } else { + policy.apply(rule.zenPolicy); + } + } + private void updateConsolidatedPolicy(String reason) { if (mConfig == null) return; synchronized (mConfig) { ZenPolicy policy = new ZenPolicy(); + if (mConfig.manualRule != null) { + applyCustomPolicy(policy, mConfig.manualRule); + } + for (ZenRule automaticRule : mConfig.automaticRules.values()) { if (automaticRule.isAutomaticActive()) { - policy.apply(automaticRule.zenPolicy); + applyCustomPolicy(policy, automaticRule); } } Policy newPolicy = mConfig.toNotificationPolicy(policy);