summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nikita Ioffe <ioffe@google.com> 2019-02-22 17:04:17 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-02-22 17:04:17 +0000
commit3cbd4a584e448ca80ef0f8fea8ba514072111008 (patch)
tree703d41db5b358b4f2baec04d7c52e8ba2d2194f4
parentd490ce1483456b78739f470cda221f14196a0f37 (diff)
parent4501c11cb0a24cf2e76b227b339e77a45efe2a39 (diff)
Merge "Require INSTALL_PACKAGES permission for setInstallAsApex"
-rw-r--r--api/current.txt1
-rw-r--r--api/system-current.txt1
-rw-r--r--core/java/android/content/pm/PackageInstaller.java4
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java5
4 files changed, 8 insertions, 3 deletions
diff --git a/api/current.txt b/api/current.txt
index b8374640493b..dfe50bbd1f79 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -11475,7 +11475,6 @@ package android.content.pm {
method public void setAppIcon(@Nullable android.graphics.Bitmap);
method public void setAppLabel(@Nullable CharSequence);
method public void setAppPackageName(@Nullable String);
- method public void setInstallAsApex();
method public void setInstallLocation(int);
method public void setInstallReason(int);
method public void setMultiPackage();
diff --git a/api/system-current.txt b/api/system-current.txt
index bcc10c106194..e9e8b5463632 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -1558,6 +1558,7 @@ package android.content.pm {
method public void setDontKillApp(boolean);
method public void setEnableRollback();
method @RequiresPermission(android.Manifest.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS) public void setGrantedRuntimePermissions(String[]);
+ method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setInstallAsApex();
method public void setInstallAsInstantApp(boolean);
method public void setInstallAsVirtualPreload();
method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setStaged();
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 80954731bffb..badd48f9ea53 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -1545,7 +1545,11 @@ public class PackageInstaller {
/**
* Set this session to be installing an APEX package.
+ *
+ * {@hide}
*/
+ @SystemApi
+ @RequiresPermission(Manifest.permission.INSTALL_PACKAGES)
public void setInstallAsApex() {
installFlags |= PackageManager.INSTALL_APEX;
}
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index f06da49f5b94..bd74174b2e88 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -483,11 +483,12 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
}
}
- if (params.isStaged) {
+ boolean isApex = (params.installFlags & PackageManager.INSTALL_APEX) != 0;
+ if (params.isStaged || isApex) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, TAG);
}
- if ((params.installFlags & PackageManager.INSTALL_APEX) != 0) {
+ if (isApex) {
if (!mApexManager.isApexSupported()) {
throw new IllegalArgumentException(
"This device doesn't support the installation of APEX files");