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 {