diff options
3 files changed, 13 insertions, 2 deletions
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index c7134548a1e1..cf4e4f690dce 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2530,6 +2530,12 @@ android:label="@string/permlab_access_notification_policy" android:protectionLevel="normal" /> + <!-- Allows modification of do not disturb rules and policies. Only allowed for system + processes. + @hide --> + <permission android:name="android.permission.MANAGE_NOTIFICATIONS" + android:protectionLevel="signature" /> + <!-- Allows access to keyguard secure storage. Only allowed for system processes. @hide --> <permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 0c884f1558fa..908dddab8ccf 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -1642,6 +1642,10 @@ public class NotificationManagerService extends SystemService { } private void enforcePolicyAccess(String pkg, String method) { + if (PackageManager.PERMISSION_GRANTED == getContext().checkCallingPermission( + android.Manifest.permission.MANAGE_NOTIFICATION_RULES)) { + return; + } if (!checkPolicyAccess(pkg)) { Slog.w(TAG, "Notification policy access denied calling " + method); throw new SecurityException("Notification policy access denied"); diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index cbe61c3da5af..9131e5eecbf5 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -248,8 +248,9 @@ public class ZenModeHelper { } pw.printf("allow(calls=%s,callsFrom=%s,repeatCallers=%s,messages=%s,messagesFrom=%s," + "events=%s,reminders=%s)\n", - config.allowCalls, config.allowCallsFrom, config.allowRepeatCallers, - config.allowMessages, config.allowMessagesFrom, + config.allowCalls, ZenModeConfig.sourceToString(config.allowCallsFrom), + config.allowRepeatCallers, config.allowMessages, + ZenModeConfig.sourceToString(config.allowMessagesFrom), config.allowEvents, config.allowReminders); pw.print(prefix); pw.print(" manualRule="); pw.println(config.manualRule); if (config.automaticRules.isEmpty()) return; |