diff options
Diffstat (limited to 'src/com/android/packageinstaller')
-rw-r--r-- | src/com/android/packageinstaller/permission/model/PermissionGroups.java | 5 | ||||
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java | 20 |
2 files changed, 21 insertions, 4 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionGroups.java b/src/com/android/packageinstaller/permission/model/PermissionGroups.java index 59eba856..c496e898 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionGroups.java +++ b/src/com/android/packageinstaller/permission/model/PermissionGroups.java @@ -212,11 +212,12 @@ public final class PermissionGroups implements LoaderCallbacks<List<PermissionGr } private Drawable loadItemInfoIcon(PackageItemInfo itemInfo) { - final Drawable icon; + Drawable icon = null; if (itemInfo.icon > 0) { icon = Utils.loadDrawable(getContext().getPackageManager(), itemInfo.packageName, itemInfo.icon); - } else { + } + if (icon == null) { icon = getContext().getDrawable(R.drawable.ic_perm_device_info); } return icon; diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 44bbcc9c..c8446039 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -107,7 +107,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() { @@ -116,6 +116,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()) { @@ -135,7 +145,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 { |