Auto grant permissions in an already granted group.

bug:24074183

Change-Id: Iad6f9b7d5b83d0b0121796891bcd069658995a47
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index aaa65f9..56b3f46 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -104,7 +104,7 @@
             return;
         }
 
-        mAppPermissions = new AppPermissions(this, callingPackageInfo, mRequestedPermissions, false,
+        mAppPermissions = new AppPermissions(this, callingPackageInfo, null, false,
                 new Runnable() {
                     @Override
                     public void run() {
@@ -113,6 +113,16 @@
                 });
 
         for (AppPermissionGroup group : mAppPermissions.getPermissionGroups()) {
+            boolean groupHasRequestedPermission = false;
+            for (String requestedPermission : mRequestedPermissions) {
+                if (group.hasPermission(requestedPermission)) {
+                    groupHasRequestedPermission = true;
+                    break;
+                }
+            }
+            if (!groupHasRequestedPermission) {
+                continue;
+            }
             // We allow the user to choose only non-fixed permissions. A permission
             // is fixed either by device policy or the user denying with prejudice.
             if (!group.isUserFixed() && !group.isPolicyFixed()) {
@@ -132,7 +142,13 @@
                     } break;
 
                     default: {
-                        mRequestGrantPermissionGroups.put(group.getName(), new GroupState(group));
+                        if (!group.areRuntimePermissionsGranted()) {
+                            mRequestGrantPermissionGroups.put(group.getName(),
+                                    new GroupState(group));
+                        } else {
+                            group.grantRuntimePermissions(false);
+                            updateGrantResults(group);
+                        }
                     } break;
                 }
             } else {