summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Julia Reynolds <juliacr@google.com> 2015-09-28 18:51:48 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-09-28 18:51:48 +0000
commitb487ffeef7e9e6cc2fae08c2ef7ac078cf626bd3 (patch)
treeb7f1f393dc80df65b2b0532b78ef2f2a1f611a9d
parent7642d568877335f3dd824f16864b9bf036c205ef (diff)
parent39a8c353a8f723e5e67bc846f8fa96d580c4abbb (diff)
Merge "Allow signature apps to modify notification policies."
-rw-r--r--core/res/AndroidManifest.xml6
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java4
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java5
3 files changed, 13 insertions, 2 deletions
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index df5e35968af7..148e7c109601 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 14a2cbc0e591..c895ae1fb724 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;