Loading cmds/pm/src/com/android/commands/pm/Pm.java +53 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.content.pm.FeatureInfo; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.InstrumentationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; Loading @@ -55,12 +56,12 @@ import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import libcore.io.IoUtils; import com.android.internal.content.PackageHelper; import com.android.internal.util.ArrayUtils; import com.android.internal.util.SizedInputStream; import libcore.io.IoUtils; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; Loading Loading @@ -234,6 +235,10 @@ public final class Pm { return runForceDexOpt(); } if ("move".equals(op)) { return runMove(); } try { if (args.length == 1) { if (args[0].equalsIgnoreCase("-l")) { Loading Loading @@ -1278,6 +1283,51 @@ public final class Pm { } } class LocalPackageMoveObserver extends IPackageMoveObserver.Stub { boolean finished; int returnCode; @Override public void packageMoved(String packageName, int returnCode) throws RemoteException { synchronized (this) { this.finished = true; this.returnCode = returnCode; notifyAll(); } } } public int runMove() { final String packageName = nextArg(); String volumeUuid = nextArg(); if ("internal".equals(volumeUuid)) { volumeUuid = null; } final LocalPackageMoveObserver obs = new LocalPackageMoveObserver(); try { mPm.movePackageAndData(packageName, volumeUuid, obs); synchronized (obs) { while (!obs.finished) { try { obs.wait(); } catch (InterruptedException e) { } } if (obs.returnCode == PackageManager.MOVE_SUCCEEDED) { System.out.println("Success"); return 0; } else { System.err.println("Failure [" + obs.returnCode + "]"); return 1; } } } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } private int runUninstall() throws RemoteException { int flags = 0; int userId = UserHandle.USER_ALL; Loading Loading @@ -1820,6 +1870,7 @@ public final class Pm { System.err.println(" pm install-abandon SESSION_ID"); System.err.println(" pm uninstall [-k] [--user USER_ID] PACKAGE"); System.err.println(" pm set-installer PACKAGE INSTALLER"); System.err.println(" pm move PACKAGE [internal|UUID]"); System.err.println(" pm clear [--user USER_ID] PACKAGE"); System.err.println(" pm enable [--user USER_ID] PACKAGE_OR_COMPONENT"); System.err.println(" pm disable [--user USER_ID] PACKAGE_OR_COMPONENT"); Loading core/java/android/app/ApplicationPackageManager.java +14 −4 Original line number Diff line number Diff line Loading @@ -62,19 +62,19 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.util.ArrayMap; import android.util.Log; import android.view.Display; import android.os.SystemProperties; import dalvik.system.VMRuntime; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.Preconditions; import com.android.internal.util.UserIcons; import dalvik.system.VMRuntime; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; Loading Loading @@ -1363,7 +1363,17 @@ final class ApplicationPackageManager extends PackageManager { try { mPM.movePackage(packageName, observer, flags); } catch (RemoteException e) { // Should never happen! throw e.rethrowAsRuntimeException(); } } @Override public void movePackageAndData(String packageName, String volumeUuid, IPackageMoveObserver observer) { try { mPM.movePackageAndData(packageName, volumeUuid, observer); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } Loading core/java/android/content/pm/ApplicationInfo.java +5 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public int largestWidthLimitDp = 0; /** {@hide} */ public String volumeUuid; /** {@hide} */ public String scanSourceDir; /** {@hide} */ Loading Loading @@ -726,6 +728,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requiresSmallestWidthDp = orig.requiresSmallestWidthDp; compatibleWidthLimitDp = orig.compatibleWidthLimitDp; largestWidthLimitDp = orig.largestWidthLimitDp; volumeUuid = orig.volumeUuid; scanSourceDir = orig.scanSourceDir; scanPublicSourceDir = orig.scanPublicSourceDir; sourceDir = orig.sourceDir; Loading Loading @@ -778,6 +781,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { dest.writeInt(requiresSmallestWidthDp); dest.writeInt(compatibleWidthLimitDp); dest.writeInt(largestWidthLimitDp); dest.writeString(volumeUuid); dest.writeString(scanSourceDir); dest.writeString(scanPublicSourceDir); dest.writeString(sourceDir); Loading Loading @@ -829,6 +833,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requiresSmallestWidthDp = source.readInt(); compatibleWidthLimitDp = source.readInt(); largestWidthLimitDp = source.readInt(); volumeUuid = source.readString(); scanSourceDir = source.readString(); scanPublicSourceDir = source.readString(); sourceDir = source.readString(); Loading core/java/android/content/pm/IPackageManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -432,6 +432,7 @@ interface IPackageManager { PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage); void movePackage(String packageName, IPackageMoveObserver observer, int flags); void movePackageAndData(String packageName, String volumeUuid, IPackageMoveObserver observer); boolean addPermissionAsync(in PermissionInfo info); Loading core/java/android/content/pm/PackageInstaller.java +5 −0 Original line number Diff line number Diff line Loading @@ -887,6 +887,8 @@ public class PackageInstaller { public Uri referrerUri; /** {@hide} */ public String abiOverride; /** {@hide} */ public String volumeUuid; /** * Construct parameters for a new package install session. Loading @@ -911,6 +913,7 @@ public class PackageInstaller { originatingUri = source.readParcelable(null); referrerUri = source.readParcelable(null); abiOverride = source.readString(); volumeUuid = source.readString(); } /** Loading Loading @@ -1008,6 +1011,7 @@ public class PackageInstaller { pw.printPair("originatingUri", originatingUri); pw.printPair("referrerUri", referrerUri); pw.printPair("abiOverride", abiOverride); pw.printPair("volumeUuid", volumeUuid); pw.println(); } Loading @@ -1028,6 +1032,7 @@ public class PackageInstaller { dest.writeParcelable(originatingUri, flags); dest.writeParcelable(referrerUri, flags); dest.writeString(abiOverride); dest.writeString(volumeUuid); } public static final Parcelable.Creator<SessionParams> Loading Loading
cmds/pm/src/com/android/commands/pm/Pm.java +53 −2 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.content.pm.FeatureInfo; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageInstaller; import android.content.pm.IPackageManager; import android.content.pm.IPackageMoveObserver; import android.content.pm.InstrumentationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; Loading @@ -55,12 +56,12 @@ import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import libcore.io.IoUtils; import com.android.internal.content.PackageHelper; import com.android.internal.util.ArrayUtils; import com.android.internal.util.SizedInputStream; import libcore.io.IoUtils; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; Loading Loading @@ -234,6 +235,10 @@ public final class Pm { return runForceDexOpt(); } if ("move".equals(op)) { return runMove(); } try { if (args.length == 1) { if (args[0].equalsIgnoreCase("-l")) { Loading Loading @@ -1278,6 +1283,51 @@ public final class Pm { } } class LocalPackageMoveObserver extends IPackageMoveObserver.Stub { boolean finished; int returnCode; @Override public void packageMoved(String packageName, int returnCode) throws RemoteException { synchronized (this) { this.finished = true; this.returnCode = returnCode; notifyAll(); } } } public int runMove() { final String packageName = nextArg(); String volumeUuid = nextArg(); if ("internal".equals(volumeUuid)) { volumeUuid = null; } final LocalPackageMoveObserver obs = new LocalPackageMoveObserver(); try { mPm.movePackageAndData(packageName, volumeUuid, obs); synchronized (obs) { while (!obs.finished) { try { obs.wait(); } catch (InterruptedException e) { } } if (obs.returnCode == PackageManager.MOVE_SUCCEEDED) { System.out.println("Success"); return 0; } else { System.err.println("Failure [" + obs.returnCode + "]"); return 1; } } } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } private int runUninstall() throws RemoteException { int flags = 0; int userId = UserHandle.USER_ALL; Loading Loading @@ -1820,6 +1870,7 @@ public final class Pm { System.err.println(" pm install-abandon SESSION_ID"); System.err.println(" pm uninstall [-k] [--user USER_ID] PACKAGE"); System.err.println(" pm set-installer PACKAGE INSTALLER"); System.err.println(" pm move PACKAGE [internal|UUID]"); System.err.println(" pm clear [--user USER_ID] PACKAGE"); System.err.println(" pm enable [--user USER_ID] PACKAGE_OR_COMPONENT"); System.err.println(" pm disable [--user USER_ID] PACKAGE_OR_COMPONENT"); Loading
core/java/android/app/ApplicationPackageManager.java +14 −4 Original line number Diff line number Diff line Loading @@ -62,19 +62,19 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.util.ArrayMap; import android.util.Log; import android.view.Display; import android.os.SystemProperties; import dalvik.system.VMRuntime; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.Preconditions; import com.android.internal.util.UserIcons; import dalvik.system.VMRuntime; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; Loading Loading @@ -1363,7 +1363,17 @@ final class ApplicationPackageManager extends PackageManager { try { mPM.movePackage(packageName, observer, flags); } catch (RemoteException e) { // Should never happen! throw e.rethrowAsRuntimeException(); } } @Override public void movePackageAndData(String packageName, String volumeUuid, IPackageMoveObserver observer) { try { mPM.movePackageAndData(packageName, volumeUuid, observer); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } Loading
core/java/android/content/pm/ApplicationInfo.java +5 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public int largestWidthLimitDp = 0; /** {@hide} */ public String volumeUuid; /** {@hide} */ public String scanSourceDir; /** {@hide} */ Loading Loading @@ -726,6 +728,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requiresSmallestWidthDp = orig.requiresSmallestWidthDp; compatibleWidthLimitDp = orig.compatibleWidthLimitDp; largestWidthLimitDp = orig.largestWidthLimitDp; volumeUuid = orig.volumeUuid; scanSourceDir = orig.scanSourceDir; scanPublicSourceDir = orig.scanPublicSourceDir; sourceDir = orig.sourceDir; Loading Loading @@ -778,6 +781,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { dest.writeInt(requiresSmallestWidthDp); dest.writeInt(compatibleWidthLimitDp); dest.writeInt(largestWidthLimitDp); dest.writeString(volumeUuid); dest.writeString(scanSourceDir); dest.writeString(scanPublicSourceDir); dest.writeString(sourceDir); Loading Loading @@ -829,6 +833,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { requiresSmallestWidthDp = source.readInt(); compatibleWidthLimitDp = source.readInt(); largestWidthLimitDp = source.readInt(); volumeUuid = source.readString(); scanSourceDir = source.readString(); scanPublicSourceDir = source.readString(); sourceDir = source.readString(); Loading
core/java/android/content/pm/IPackageManager.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -432,6 +432,7 @@ interface IPackageManager { PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage); void movePackage(String packageName, IPackageMoveObserver observer, int flags); void movePackageAndData(String packageName, String volumeUuid, IPackageMoveObserver observer); boolean addPermissionAsync(in PermissionInfo info); Loading
core/java/android/content/pm/PackageInstaller.java +5 −0 Original line number Diff line number Diff line Loading @@ -887,6 +887,8 @@ public class PackageInstaller { public Uri referrerUri; /** {@hide} */ public String abiOverride; /** {@hide} */ public String volumeUuid; /** * Construct parameters for a new package install session. Loading @@ -911,6 +913,7 @@ public class PackageInstaller { originatingUri = source.readParcelable(null); referrerUri = source.readParcelable(null); abiOverride = source.readString(); volumeUuid = source.readString(); } /** Loading Loading @@ -1008,6 +1011,7 @@ public class PackageInstaller { pw.printPair("originatingUri", originatingUri); pw.printPair("referrerUri", referrerUri); pw.printPair("abiOverride", abiOverride); pw.printPair("volumeUuid", volumeUuid); pw.println(); } Loading @@ -1028,6 +1032,7 @@ public class PackageInstaller { dest.writeParcelable(originatingUri, flags); dest.writeParcelable(referrerUri, flags); dest.writeString(abiOverride); dest.writeString(volumeUuid); } public static final Parcelable.Creator<SessionParams> Loading