diff options
| -rw-r--r-- | api/test-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageInstaller.java | 1 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerService.java | 7 |
3 files changed, 9 insertions, 0 deletions
diff --git a/api/test-current.txt b/api/test-current.txt index 849c5503266d..128e84f59048 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -997,6 +997,7 @@ package android.content.pm { method public void setEnableRollback(boolean, int); method @RequiresPermission("android.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 setInstallerPackageName(@Nullable String); method public void setRequestDowngrade(boolean); 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 da56abf73516..a9f143987cd4 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -1878,6 +1878,7 @@ public class PackageInstaller { /** {@hide} */ @SystemApi + @TestApi public void setInstallAsInstantApp(boolean isInstantApp) { if (isInstantApp) { installFlags |= PackageManager.INSTALL_INSTANT_APP; diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index f52db5fb5f2f..31ee59717dba 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -618,6 +618,13 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } } + if ((params.installFlags & PackageManager.INSTALL_INSTANT_APP) != 0 + && !isCalledBySystemOrShell(callingUid) + && (mPm.getFlagsForUid(callingUid) & ApplicationInfo.FLAG_SYSTEM) == 0) { + throw new SecurityException( + "Only system apps could use the PackageManager.INSTALL_INSTANT_APP flag."); + } + if (params.isStaged && !isCalledBySystemOrShell(callingUid)) { if (mBypassNextStagedInstallerCheck) { mBypassNextStagedInstallerCheck = false; |