From b7717682495e51f602004dfbfabdf767d3fbf3de Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Wed, 30 Nov 2016 15:41:21 -0800 Subject: [PATCH] Add system API to install ephemeral apps Test: manual; install using "adb install --ephemeral" Change-Id: Idce214779fea5f3c4a0121542319044f9f0e0a42 --- api/system-current.txt | 1 + cmds/pm/src/com/android/commands/pm/Pm.java | 2 +- core/java/android/content/pm/PackageInstaller.java | 10 ++++++++++ .../android/server/pm/PackageManagerShellCommand.java | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 7a287df833f67..9d113dbb06851 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -10236,6 +10236,7 @@ package android.content.pm { method public void setAppPackageName(java.lang.String); method public void setDontKillApp(boolean); method public void setGrantedRuntimePermissions(java.lang.String[]); + method public void setInstallAsInstantApp(boolean); method public void setInstallLocation(int); method public void setOriginatingUid(int); method public void setOriginatingUri(android.net.Uri); diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java index 50f46f4007d3b..810d20187ee4c 100644 --- a/cmds/pm/src/com/android/commands/pm/Pm.java +++ b/cmds/pm/src/com/android/commands/pm/Pm.java @@ -553,7 +553,7 @@ public final class Pm { sessionParams.abiOverride = checkAbiArgument(nextOptionData()); break; case "--ephemeral": - sessionParams.installFlags |= PackageManager.INSTALL_EPHEMERAL; + sessionParams.setInstallAsInstantApp(true /*isInstantApp*/); break; case "--user": params.userId = UserHandle.parseUserArg(nextOptionData()); diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index ed8143e36f03f..646bd3c8e78b6 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -1066,6 +1066,16 @@ public class PackageInstaller { } } + /** {@hide} */ + @SystemApi + public void setInstallAsInstantApp(boolean isInstantApp) { + if (isInstantApp) { + installFlags |= PackageManager.INSTALL_EPHEMERAL; + } else { + installFlags &= ~PackageManager.INSTALL_EPHEMERAL; + } + } + /** {@hide} */ public void dump(IndentingPrintWriter pw) { pw.printPair("mode", mode); diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 7938a1289280e..2751742ff8757 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -1109,7 +1109,7 @@ class PackageManagerShellCommand extends ShellCommand { sessionParams.abiOverride = checkAbiArgument(getNextArg()); break; case "--ephemeral": - sessionParams.installFlags |= PackageManager.INSTALL_EPHEMERAL; + sessionParams.setInstallAsInstantApp(true /*isInstantApp*/); break; case "--user": params.userId = UserHandle.parseUserArg(getNextArgRequired());