diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e31df52d8e0ae..ce7df89d9a3ef 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2957,6 +2957,18 @@ public class PackageManagerService extends IPackageManager.Stub { | (!Build.IS_DEBUGGABLE ? MATCH_SYSTEM_ONLY : 0); final List matches = queryIntentActivitiesInternal(intent, PACKAGE_MIME_TYPE, resolveFlags, UserHandle.USER_SYSTEM); + Iterator iter = matches.iterator(); + while (iter.hasNext()) { + final ResolveInfo rInfo = iter.next(); + final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName); + if (ps != null) { + final PermissionsState permissionsState = ps.getPermissionsState(); + if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)) { + continue; + } + } + iter.remove(); + } if (matches.size() == 0) { return null; } else if (matches.size() == 1) {