OSDN Git Service

Change permission enforcement through pm command.
authorJeff Sharkey <jsharkey@android.com>
Mon, 30 Apr 2012 20:46:54 +0000 (13:46 -0700)
committerJeff Sharkey <jsharkey@android.com>
Mon, 30 Apr 2012 20:46:54 +0000 (13:46 -0700)
Add "set-permission-enforced", which can currently only mutate
enforcement of READ_EXTERNAL_STORAGE.

Bug: 6363043
Change-Id: I3f7929738c8c36b0a54fbf171c03fe16c09b5d99

cmds/pm/src/com/android/commands/pm/Pm.java

index 4d638d0..e19ad66 100644 (file)
@@ -136,6 +136,11 @@ public final class Pm {
             return;
         }
 
+        if ("set-permission-enforced".equals(op)) {
+            runSetPermissionEnforced();
+            return;
+        }
+
         if ("set-install-location".equals(op)) {
             runSetInstallLocation();
             return;
@@ -1114,6 +1119,33 @@ public final class Pm {
         }
     }
 
+    private void runSetPermissionEnforced() {
+        final String permission = nextArg();
+        if (permission == null) {
+            System.err.println("Error: no permission specified");
+            showUsage();
+            return;
+        }
+        final String enforcedRaw = nextArg();
+        if (enforcedRaw == null) {
+            System.err.println("Error: no enforcement specified");
+            showUsage();
+            return;
+        }
+        final boolean enforced = Boolean.parseBoolean(enforcedRaw);
+        try {
+            mPm.setPermissionEnforced(permission, enforced);
+        } catch (RemoteException e) {
+            System.err.println(e.toString());
+            System.err.println(PM_NOT_RUNNING_ERR);
+        } catch (IllegalArgumentException e) {
+            System.err.println("Bad argument: " + e.toString());
+            showUsage();
+        } catch (SecurityException e) {
+            System.err.println("Operation not allowed: " + e.toString());
+        }
+    }
+
     /**
      * Displays the package file for a package.
      * @param pckg
@@ -1214,6 +1246,7 @@ public final class Pm {
         System.err.println("       pm revoke PACKAGE PERMISSION");
         System.err.println("       pm set-install-location [0/auto] [1/internal] [2/external]");
         System.err.println("       pm get-install-location");
+        System.err.println("       pm set-permission-enforced PERMISSION [true|false]");
         System.err.println("       pm create-user USER_NAME");
         System.err.println("       pm remove-user USER_ID");
         System.err.println("");