@@ -3631,12 +3631,9 @@ public boolean isUpgrade() {
36313631 Iterator<ResolveInfo> iter = matches.iterator();
36323632 while (iter.hasNext()) {
36333633 final ResolveInfo rInfo = iter.next();
3634- final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName);
3635- if (ps != null) {
3636- final PermissionsState permissionsState = ps.getPermissionsState();
3637- if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)) {
3638- continue;
3639- }
3634+ if (checkPermission(Manifest.permission.INSTALL_PACKAGES,
3635+ rInfo.activityInfo.packageName, 0) == PERMISSION_GRANTED) {
3636+ continue;
36403637 }
36413638 iter.remove();
36423639 }
@@ -3884,9 +3881,24 @@ private PackageInfo generatePackageInfo(PackageSetting ps, int flags, int userId
38843881 final int[] gids = (flags & PackageManager.GET_GIDS) == 0
38853882 ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId);
38863883 // Compute granted permissions only if package has requested permissions
3887- final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
3884+ Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
38883885 ? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
38893886 final PackageUserState state = ps.readUserState(userId);
3887+ if (state.instantApp) {
3888+ permissions = new ArraySet<>(permissions);
3889+ permissions.removeIf(permissionName -> {
3890+ BasePermission permission = mSettings.mPermissions.get(permissionName);
3891+ if (permission == null) {
3892+ return true;
3893+ }
3894+ if (!permission.isInstant()) {
3895+ EventLog.writeEvent(0x534e4554, "140256621", UserHandle.getUid(userId,
3896+ ps.appId), permissionName);
3897+ return true;
3898+ }
3899+ return false;
3900+ });
3901+ }
38903902
38913903 if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0
38923904 && ps.isSystem()) {
@@ -8702,10 +8714,9 @@ public ParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId
87028714 private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps,
87038715 String[] permissions, boolean[] tmp, int flags, int userId) {
87048716 int numMatch = 0;
8705- final PermissionsState permissionsState = ps.getPermissionsState();
87068717 for (int i=0; i<permissions.length; i++) {
87078718 final String permission = permissions[i];
8708- if (permissionsState.hasPermission (permission, userId)) {
8719+ if (checkPermission (permission, ps.name, userId) == PERMISSION_GRANTED ) {
87098720 tmp[i] = true;
87108721 numMatch++;
87118722 } else {
0 commit comments