From c7e595a22c11247b3e6b0fbfa324542321ab9d14 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 15 Sep 2015 17:43:35 -0700 Subject: Auto grant permissions in an already granted group. bug:24074183 Change-Id: I8eb4e4c76ed27721b04e09ae009ddd2daec1e0b1 (cherry picked from commit ecc46fe0ce772338786cb9e23cb872189e6a285c) --- .../permission/ui/GrantPermissionsActivity.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index aaa65f9e..56b3f466 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -104,7 +104,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity 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 @@ public class GrantPermissionsActivity extends OverlayTouchActivity }); 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 @@ public class GrantPermissionsActivity extends OverlayTouchActivity } 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 { -- cgit v1.2.3