diff options
| author | 2016-11-30 00:14:31 +0000 | |
|---|---|---|
| committer | 2016-11-30 00:14:35 +0000 | |
| commit | 36f97300ac462dcf78d225e1db03745bd6246bf0 (patch) | |
| tree | 6f2105d0ab3a5970234cba006168f409286c3ab3 | |
| parent | 2683dd13aa3222c9cc913950e1391933405c26e7 (diff) | |
| parent | 08a04878b0d6ed4c661330751ac253c0b18ef537 (diff) | |
Merge "Require INSTALL_PACKAGES permission"
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e31df52d8e0a..ce7df89d9a3e 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<ResolveInfo> matches = queryIntentActivitiesInternal(intent, PACKAGE_MIME_TYPE, resolveFlags, UserHandle.USER_SYSTEM); + Iterator<ResolveInfo> 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) { |