OSDN Git Service

Clear calling identity before getting the current user.
authorJulia Reynolds <juliacr@google.com>
Thu, 13 Aug 2015 13:01:33 +0000 (09:01 -0400)
committerJulia Reynolds <juliacr@google.com>
Thu, 13 Aug 2015 13:01:33 +0000 (09:01 -0400)
This is necessary so non-privilged apps can call setInterruptionFilter.

Bug: 23156657
Change-Id: Ia903a39626c93957276d66805446cd25a91341b5

services/core/java/com/android/server/notification/NotificationManagerService.java

index 9426b76..4351798 100644 (file)
@@ -3615,22 +3615,28 @@ public class NotificationManagerService extends SystemService {
 
         public ArraySet<String> getGrantedPackages() {
             final ArraySet<String> pkgs = new ArraySet<>();
-            final String setting = Settings.Secure.getStringForUser(
-                    getContext().getContentResolver(),
-                    Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES,
-                    ActivityManager.getCurrentUser());
-            if (setting != null) {
-                final String[] tokens = setting.split(SEPARATOR);
-                for (int i = 0; i < tokens.length; i++) {
-                    String token = tokens[i];
-                    if (token != null) {
-                        token.trim();
-                    }
-                    if (TextUtils.isEmpty(token)) {
-                        continue;
+
+            long identity = Binder.clearCallingIdentity();
+            try {
+                final String setting = Settings.Secure.getStringForUser(
+                        getContext().getContentResolver(),
+                        Settings.Secure.ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES,
+                        ActivityManager.getCurrentUser());
+                if (setting != null) {
+                    final String[] tokens = setting.split(SEPARATOR);
+                    for (int i = 0; i < tokens.length; i++) {
+                        String token = tokens[i];
+                        if (token != null) {
+                            token.trim();
+                        }
+                        if (TextUtils.isEmpty(token)) {
+                            continue;
+                        }
+                        pkgs.add(token);
                     }
-                    pkgs.add(token);
                 }
+            } finally {
+                Binder.restoreCallingIdentity(identity);
             }
             return pkgs;
         }