summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2016-11-30 00:14:31 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-11-30 00:14:35 +0000
commit36f97300ac462dcf78d225e1db03745bd6246bf0 (patch)
tree6f2105d0ab3a5970234cba006168f409286c3ab3
parent2683dd13aa3222c9cc913950e1391933405c26e7 (diff)
parent08a04878b0d6ed4c661330751ac253c0b18ef537 (diff)
Merge "Require INSTALL_PACKAGES permission"
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java12
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) {