OSDN Git Service

Allow shell notification listener access toggling
authorJulia Reynolds <juliacr@google.com>
Fri, 23 Jun 2017 17:32:09 +0000 (13:32 -0400)
committerJulia Reynolds <juliacr@google.com>
Fri, 23 Jun 2017 17:38:15 +0000 (13:38 -0400)
For cts tests

Bug: 62815965
Test: cts
Change-Id: Ida801c05b84362b61c87398c999308cebb5bd969

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

index 0a858b4..e5dc550 100644 (file)
@@ -5679,11 +5679,14 @@ public class NotificationManagerService extends SystemService {
 
     private class ShellCmd extends ShellCommand {
         public static final String USAGE = "help\n"
+                + "allow_listener COMPONENT\n"
+                + "disallow_listener COMPONENT\n"
                 + "allow_dnd PACKAGE\n"
                 + "disallow_dnd PACKAGE";
 
         @Override
         public int onCommand(String cmd) {
+            final PrintWriter pw = getOutPrintWriter();
             try {
                 switch (cmd) {
                     case "allow_dnd": {
@@ -5697,11 +5700,30 @@ public class NotificationManagerService extends SystemService {
                                 getNextArgRequired(), false);
                     }
                     break;
+                    case "allow_listener": {
+                        ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired());
+                        if (cn == null) {
+                            pw.println("Invalid listener - must be a ComponentName");
+                            return -1;
+                        }
+                        getBinderService().setNotificationListenerAccessGranted(cn, true);
+                    }
+                    break;
+                    case "disallow_listener": {
+                        ComponentName cn = ComponentName.unflattenFromString(getNextArgRequired());
+                        if (cn == null) {
+                            pw.println("Invalid listener - must be a ComponentName");
+                            return -1;
+                        }
+                        getBinderService().setNotificationListenerAccessGranted(cn, false);
+                    }
+                    break;
 
                     default:
                         return handleDefaultCommands(cmd);
                 }
-            } catch (RemoteException e) {
+            } catch (Exception e) {
+                pw.println("Error occurred. Check logcat for details. " + e.getMessage());
                 Slog.e(TAG, "Error running shell command", e);
             }
             return 0;