Loading api/current.txt +78 −0 Original line number Original line Diff line number Diff line Loading @@ -8358,6 +8358,36 @@ package android.content.pm { field public int reqGlEsVersion; field public int reqGlEsVersion; } } public class InstallSessionInfo implements android.os.Parcelable { method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public java.lang.String getInstallerPackageName(); method public java.lang.String getPackageName(); method public int getProgress(); method public int getSessionId(); method public java.lang.CharSequence getTitle(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } public class InstallSessionParams implements android.os.Parcelable { ctor public InstallSessionParams(); method public int describeContents(); method public void setDeltaSize(long); method public void setIcon(android.graphics.Bitmap); method public void setInstallLocation(int); method public void setModeFullInstall(); method public void setModeInheritExisting(); method public void setOriginatingUri(android.net.Uri); method public void setPackageName(java.lang.String); method public void setProgressMax(int); method public void setReferrerUri(android.net.Uri); method public void setSignatures(android.content.pm.Signature[]); method public void setTitle(java.lang.CharSequence); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { ctor public InstrumentationInfo(); ctor public InstrumentationInfo(); ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo); ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo); Loading Loading @@ -8425,6 +8455,9 @@ package android.content.pm { method public int describeContents(); method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.Parcelable.Creator CREATOR; field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0 field public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; // 0x1 field public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; // 0x2 field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1 field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1 field public android.content.pm.ActivityInfo[] activities; field public android.content.pm.ActivityInfo[] activities; Loading @@ -8432,6 +8465,7 @@ package android.content.pm { field public android.content.pm.ConfigurationInfo[] configPreferences; field public android.content.pm.ConfigurationInfo[] configPreferences; field public long firstInstallTime; field public long firstInstallTime; field public int[] gids; field public int[] gids; field public int installLocation; field public android.content.pm.InstrumentationInfo[] instrumentation; field public android.content.pm.InstrumentationInfo[] instrumentation; field public long lastUpdateTime; field public long lastUpdateTime; field public java.lang.String packageName; field public java.lang.String packageName; Loading @@ -8445,10 +8479,52 @@ package android.content.pm { field public java.lang.String sharedUserId; field public java.lang.String sharedUserId; field public int sharedUserLabel; field public int sharedUserLabel; field public android.content.pm.Signature[] signatures; field public android.content.pm.Signature[] signatures; field public java.lang.String[] splitNames; field public int versionCode; field public int versionCode; field public java.lang.String versionName; field public java.lang.String versionName; } } public class PackageInstaller { method public int createSession(android.content.pm.InstallSessionParams) throws java.io.IOException; method public java.util.List<android.content.pm.InstallSessionInfo> getActiveSessions(); method public android.content.pm.PackageInstaller.Session openSession(int); method public void registerSessionObserver(android.content.pm.PackageInstaller.SessionObserver); method public void uninstall(java.lang.String, android.content.pm.PackageInstaller.UninstallResultCallback); method public void unregisterSessionObserver(android.content.pm.PackageInstaller.SessionObserver); } public static abstract class PackageInstaller.CommitResultCallback { ctor public PackageInstaller.CommitResultCallback(); method public abstract void onFailure(java.lang.String); method public void onFailureConflict(java.lang.String, java.lang.String); method public void onFailureIncompatible(java.lang.String); method public void onFailureInvalid(java.lang.String); method public void onFailureStorage(java.lang.String); method public abstract void onSuccess(); } public static class PackageInstaller.Session implements java.io.Closeable { method public void close(); method public void commit(android.content.pm.PackageInstaller.CommitResultCallback); method public void destroy(); method public void fsync(java.io.OutputStream) throws java.io.IOException; method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException; method public void setProgress(int); } public static abstract class PackageInstaller.SessionObserver { ctor public PackageInstaller.SessionObserver(); method public abstract void onCreated(android.content.pm.InstallSessionInfo); method public abstract void onFinalized(int, boolean); method public abstract void onProgress(int, int); } public static abstract class PackageInstaller.UninstallResultCallback { ctor public PackageInstaller.UninstallResultCallback(); method public abstract void onFailure(java.lang.String); method public abstract void onSuccess(); } public class PackageItemInfo { public class PackageItemInfo { ctor public PackageItemInfo(); ctor public PackageItemInfo(); ctor public PackageItemInfo(android.content.pm.PackageItemInfo); ctor public PackageItemInfo(android.content.pm.PackageItemInfo); Loading Loading @@ -8511,6 +8587,7 @@ package android.content.pm { method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract android.content.pm.PackageInstaller getInstaller(); method public abstract java.lang.String getInstallerPackageName(java.lang.String); method public abstract java.lang.String getInstallerPackageName(java.lang.String); method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); method public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); Loading Loading @@ -29433,6 +29510,7 @@ package android.test.mock { method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public android.content.pm.PackageInstaller getInstaller(); method public java.lang.String getInstallerPackageName(java.lang.String); method public java.lang.String getInstallerPackageName(java.lang.String); method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLaunchIntentForPackage(java.lang.String); cmds/pm/src/com/android/commands/pm/Pm.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -998,7 +998,7 @@ public final class Pm { final InstallSessionParams params = new InstallSessionParams(); final InstallSessionParams params = new InstallSessionParams(); params.installFlags = PackageManager.INSTALL_ALL_USERS; params.installFlags = PackageManager.INSTALL_ALL_USERS; params.fullInstall = true; params.mode = InstallSessionParams.MODE_FULL_INSTALL; params.progressMax = -1; params.progressMax = -1; String opt; String opt; Loading @@ -1021,7 +1021,7 @@ public final class Pm { } else if (opt.equals("-d")) { } else if (opt.equals("-d")) { params.installFlags |= PackageManager.INSTALL_ALLOW_DOWNGRADE; params.installFlags |= PackageManager.INSTALL_ALLOW_DOWNGRADE; } else if (opt.equals("-p")) { } else if (opt.equals("-p")) { params.fullInstall = false; params.mode = InstallSessionParams.MODE_INHERIT_EXISTING; } else if (opt.equals("-S")) { } else if (opt.equals("-S")) { params.deltaSize = Long.parseLong(nextOptionData()); params.deltaSize = Long.parseLong(nextOptionData()); params.progressMax = (int) params.deltaSize; params.progressMax = (int) params.deltaSize; Loading core/java/android/app/ApplicationPackageManager.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -1520,7 +1520,7 @@ final class ApplicationPackageManager extends PackageManager { } } @Override @Override public PackageInstaller getPackageInstaller() { public PackageInstaller getInstaller() { try { try { return new PackageInstaller(this, mPM.getPackageInstaller(), mContext.getPackageName(), return new PackageInstaller(this, mPM.getPackageInstaller(), mContext.getPackageName(), mContext.getUserId()); mContext.getUserId()); Loading @@ -1529,6 +1529,15 @@ final class ApplicationPackageManager extends PackageManager { } } } } @Override public boolean isPackageAvailable(String packageName) { try { return mPM.isPackageAvailable(packageName, mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } /** /** * @hide * @hide */ */ Loading core/java/android/content/pm/InstallSessionInfo.java +64 −4 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,25 @@ import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; /** {@hide} */ /** * Details for an active install session. */ public class InstallSessionInfo implements Parcelable { public class InstallSessionInfo implements Parcelable { /** {@hide} */ public int sessionId; public int sessionId; /** {@hide} */ public String installerPackageName; public String installerPackageName; /** {@hide} */ public int progress; public int progress; public boolean fullInstall; /** {@hide} */ public int mode; /** {@hide} */ public String packageName; public String packageName; /** {@hide} */ public Bitmap icon; public Bitmap icon; /** {@hide} */ public CharSequence title; public CharSequence title; /** {@hide} */ /** {@hide} */ Loading @@ -41,12 +51,62 @@ public class InstallSessionInfo implements Parcelable { installerPackageName = source.readString(); installerPackageName = source.readString(); progress = source.readInt(); progress = source.readInt(); fullInstall = source.readInt() != 0; mode = source.readInt(); packageName = source.readString(); packageName = source.readString(); icon = source.readParcelable(null); icon = source.readParcelable(null); title = source.readString(); title = source.readString(); } } /** * Return the ID for this session. */ public int getSessionId() { return sessionId; } /** * Return the package name of the app that owns this session. */ public String getInstallerPackageName() { return installerPackageName; } /** * Return current overall progress of this session, between 0 and 100. * <p> * Note that this progress may not directly correspond to the value reported * by {@link PackageInstaller.Session#setProgress(int)}, as the system may * carve out a portion of the overall progress to represent its own internal * installation work. */ public int getProgress() { return progress; } /** * Return the package name this session is working with. May be {@code null} * if unknown. */ public String getPackageName() { return packageName; } /** * Return an icon representing the app being installed. May be {@code null} * if unavailable. */ public Bitmap getIcon() { return icon; } /** * Return a title representing the app being installed. May be {@code null} * if unavailable. */ public CharSequence getTitle() { return title; } @Override @Override public int describeContents() { public int describeContents() { return 0; return 0; Loading @@ -58,7 +118,7 @@ public class InstallSessionInfo implements Parcelable { dest.writeString(installerPackageName); dest.writeString(installerPackageName); dest.writeInt(progress); dest.writeInt(progress); dest.writeInt(fullInstall ? 1 : 0); dest.writeInt(mode); dest.writeString(packageName); dest.writeString(packageName); dest.writeParcelable(icon, flags); dest.writeParcelable(icon, flags); dest.writeString(title != null ? title.toString() : null); dest.writeString(title != null ? title.toString() : null); Loading core/java/android/content/pm/InstallSessionParams.java +74 −9 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.content.pm; package android.content.pm; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.net.Uri; import android.net.Uri; import android.os.Parcel; import android.os.Parcel; Loading @@ -23,13 +24,22 @@ import android.os.Parcelable; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter; /** {@hide} */ /** * Parameters for creating a new {@link PackageInstaller.Session}. */ public class InstallSessionParams implements Parcelable { public class InstallSessionParams implements Parcelable { // TODO: extend to support remaining VerificationParams // TODO: extend to support remaining VerificationParams /** {@hide} */ /** {@hide} */ public boolean fullInstall; public static final int MODE_INVALID = 0; /** {@hide} */ public static final int MODE_FULL_INSTALL = 1; /** {@hide} */ public static final int MODE_INHERIT_EXISTING = 2; /** {@hide} */ public int mode = MODE_INVALID; /** {@hide} */ /** {@hide} */ public int installFlags; public int installFlags; /** {@hide} */ /** {@hide} */ Loading Loading @@ -58,7 +68,7 @@ public class InstallSessionParams implements Parcelable { /** {@hide} */ /** {@hide} */ public InstallSessionParams(Parcel source) { public InstallSessionParams(Parcel source) { fullInstall = source.readInt() != 0; mode = source.readInt(); installFlags = source.readInt(); installFlags = source.readInt(); installLocation = source.readInt(); installLocation = source.readInt(); signatures = (Signature[]) source.readParcelableArray(null); signatures = (Signature[]) source.readParcelableArray(null); Loading @@ -72,53 +82,108 @@ public class InstallSessionParams implements Parcelable { abiOverride = source.readString(); abiOverride = source.readString(); } } public void setFullInstall(boolean fullInstall) { /** this.fullInstall = fullInstall; * Set session mode indicating that it should fully replace any existing * APKs for this application. */ public void setModeFullInstall() { this.mode = MODE_FULL_INSTALL; } } public void setInstallFlags(int installFlags) { /** this.installFlags = installFlags; * Set session mode indicating that it should inherit any existing APKs for * this application, unless they are explicitly overridden (by split name) * in the session. */ public void setModeInheritExisting() { this.mode = MODE_INHERIT_EXISTING; } } /** * Provide value of {@link PackageInfo#installLocation}, which may be used * to determine where the app will be staged. Defaults to * {@link PackageInfo#INSTALL_LOCATION_INTERNAL_ONLY}. */ public void setInstallLocation(int installLocation) { public void setInstallLocation(int installLocation) { this.installLocation = installLocation; this.installLocation = installLocation; } } /** * Optionally provide the required value of {@link PackageInfo#signatures}. * This can be used to assert that all staged APKs have been signed with * this set of specific certificates. Regardless of this value, all APKs in * the application must have the same signing certificates. */ public void setSignatures(Signature[] signatures) { public void setSignatures(Signature[] signatures) { this.signatures = signatures; this.signatures = signatures; } } /** * Indicate the expected growth in disk usage resulting from this session. * This may be used to ensure enough disk space exists before proceeding, or * to estimate container size for installations living on external storage. * <p> * This value should only reflect APK sizes. */ public void setDeltaSize(long deltaSize) { public void setDeltaSize(long deltaSize) { this.deltaSize = deltaSize; this.deltaSize = deltaSize; } } /** * Set the maximum progress for this session, used for normalization * purposes. * * @see PackageInstaller.Session#setProgress(int) */ public void setProgressMax(int progressMax) { public void setProgressMax(int progressMax) { this.progressMax = progressMax; this.progressMax = progressMax; } } /** * Optionally set the package name this session will be working with. It's * strongly recommended that you provide this value when known. */ public void setPackageName(String packageName) { public void setPackageName(String packageName) { this.packageName = packageName; this.packageName = packageName; } } /** * Optionally set an icon representing the app being installed. */ public void setIcon(Bitmap icon) { public void setIcon(Bitmap icon) { this.icon = icon; this.icon = icon; } } /** * Optionally set a title representing the app being installed. */ public void setTitle(CharSequence title) { public void setTitle(CharSequence title) { this.title = title; this.title = title; } } /** * Optionally set the URI where this package was downloaded from. Used for * verification purposes. * * @see Intent#EXTRA_ORIGINATING_URI */ public void setOriginatingUri(Uri originatingUri) { public void setOriginatingUri(Uri originatingUri) { this.originatingUri = originatingUri; this.originatingUri = originatingUri; } } /** * Optionally set the URI that referred you to install this package. Used * for verification purposes. * * @see Intent#EXTRA_REFERRER */ public void setReferrerUri(Uri referrerUri) { public void setReferrerUri(Uri referrerUri) { this.referrerUri = referrerUri; this.referrerUri = referrerUri; } } /** {@hide} */ /** {@hide} */ public void dump(IndentingPrintWriter pw) { public void dump(IndentingPrintWriter pw) { pw.printPair("fullInstall", fullInstall); pw.printPair("mode", mode); pw.printHexPair("installFlags", installFlags); pw.printHexPair("installFlags", installFlags); pw.printPair("installLocation", installLocation); pw.printPair("installLocation", installLocation); pw.printPair("signatures", (signatures != null)); pw.printPair("signatures", (signatures != null)); Loading @@ -140,7 +205,7 @@ public class InstallSessionParams implements Parcelable { @Override @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(fullInstall ? 1 : 0); dest.writeInt(mode); dest.writeInt(installFlags); dest.writeInt(installFlags); dest.writeInt(installLocation); dest.writeInt(installLocation); dest.writeParcelableArray(signatures, flags); dest.writeParcelableArray(signatures, flags); Loading Loading
api/current.txt +78 −0 Original line number Original line Diff line number Diff line Loading @@ -8358,6 +8358,36 @@ package android.content.pm { field public int reqGlEsVersion; field public int reqGlEsVersion; } } public class InstallSessionInfo implements android.os.Parcelable { method public int describeContents(); method public android.graphics.Bitmap getIcon(); method public java.lang.String getInstallerPackageName(); method public java.lang.String getPackageName(); method public int getProgress(); method public int getSessionId(); method public java.lang.CharSequence getTitle(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } public class InstallSessionParams implements android.os.Parcelable { ctor public InstallSessionParams(); method public int describeContents(); method public void setDeltaSize(long); method public void setIcon(android.graphics.Bitmap); method public void setInstallLocation(int); method public void setModeFullInstall(); method public void setModeInheritExisting(); method public void setOriginatingUri(android.net.Uri); method public void setPackageName(java.lang.String); method public void setProgressMax(int); method public void setReferrerUri(android.net.Uri); method public void setSignatures(android.content.pm.Signature[]); method public void setTitle(java.lang.CharSequence); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; } public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { public class InstrumentationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { ctor public InstrumentationInfo(); ctor public InstrumentationInfo(); ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo); ctor public InstrumentationInfo(android.content.pm.InstrumentationInfo); Loading Loading @@ -8425,6 +8455,9 @@ package android.content.pm { method public int describeContents(); method public int describeContents(); method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final android.os.Parcelable.Creator CREATOR; field public static final int INSTALL_LOCATION_AUTO = 0; // 0x0 field public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; // 0x1 field public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; // 0x2 field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1 field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1 field public android.content.pm.ActivityInfo[] activities; field public android.content.pm.ActivityInfo[] activities; Loading @@ -8432,6 +8465,7 @@ package android.content.pm { field public android.content.pm.ConfigurationInfo[] configPreferences; field public android.content.pm.ConfigurationInfo[] configPreferences; field public long firstInstallTime; field public long firstInstallTime; field public int[] gids; field public int[] gids; field public int installLocation; field public android.content.pm.InstrumentationInfo[] instrumentation; field public android.content.pm.InstrumentationInfo[] instrumentation; field public long lastUpdateTime; field public long lastUpdateTime; field public java.lang.String packageName; field public java.lang.String packageName; Loading @@ -8445,10 +8479,52 @@ package android.content.pm { field public java.lang.String sharedUserId; field public java.lang.String sharedUserId; field public int sharedUserLabel; field public int sharedUserLabel; field public android.content.pm.Signature[] signatures; field public android.content.pm.Signature[] signatures; field public java.lang.String[] splitNames; field public int versionCode; field public int versionCode; field public java.lang.String versionName; field public java.lang.String versionName; } } public class PackageInstaller { method public int createSession(android.content.pm.InstallSessionParams) throws java.io.IOException; method public java.util.List<android.content.pm.InstallSessionInfo> getActiveSessions(); method public android.content.pm.PackageInstaller.Session openSession(int); method public void registerSessionObserver(android.content.pm.PackageInstaller.SessionObserver); method public void uninstall(java.lang.String, android.content.pm.PackageInstaller.UninstallResultCallback); method public void unregisterSessionObserver(android.content.pm.PackageInstaller.SessionObserver); } public static abstract class PackageInstaller.CommitResultCallback { ctor public PackageInstaller.CommitResultCallback(); method public abstract void onFailure(java.lang.String); method public void onFailureConflict(java.lang.String, java.lang.String); method public void onFailureIncompatible(java.lang.String); method public void onFailureInvalid(java.lang.String); method public void onFailureStorage(java.lang.String); method public abstract void onSuccess(); } public static class PackageInstaller.Session implements java.io.Closeable { method public void close(); method public void commit(android.content.pm.PackageInstaller.CommitResultCallback); method public void destroy(); method public void fsync(java.io.OutputStream) throws java.io.IOException; method public java.io.OutputStream openWrite(java.lang.String, long, long) throws java.io.IOException; method public void setProgress(int); } public static abstract class PackageInstaller.SessionObserver { ctor public PackageInstaller.SessionObserver(); method public abstract void onCreated(android.content.pm.InstallSessionInfo); method public abstract void onFinalized(int, boolean); method public abstract void onProgress(int, int); } public static abstract class PackageInstaller.UninstallResultCallback { ctor public PackageInstaller.UninstallResultCallback(); method public abstract void onFailure(java.lang.String); method public abstract void onSuccess(); } public class PackageItemInfo { public class PackageItemInfo { ctor public PackageItemInfo(); ctor public PackageItemInfo(); ctor public PackageItemInfo(android.content.pm.PackageItemInfo); ctor public PackageItemInfo(android.content.pm.PackageItemInfo); Loading Loading @@ -8511,6 +8587,7 @@ package android.content.pm { method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract android.content.pm.PackageInstaller getInstaller(); method public abstract java.lang.String getInstallerPackageName(java.lang.String); method public abstract java.lang.String getInstallerPackageName(java.lang.String); method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); method public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); Loading Loading @@ -29433,6 +29510,7 @@ package android.test.mock { method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public android.content.pm.PackageInstaller getInstaller(); method public java.lang.String getInstallerPackageName(java.lang.String); method public java.lang.String getInstallerPackageName(java.lang.String); method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLaunchIntentForPackage(java.lang.String);
cmds/pm/src/com/android/commands/pm/Pm.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -998,7 +998,7 @@ public final class Pm { final InstallSessionParams params = new InstallSessionParams(); final InstallSessionParams params = new InstallSessionParams(); params.installFlags = PackageManager.INSTALL_ALL_USERS; params.installFlags = PackageManager.INSTALL_ALL_USERS; params.fullInstall = true; params.mode = InstallSessionParams.MODE_FULL_INSTALL; params.progressMax = -1; params.progressMax = -1; String opt; String opt; Loading @@ -1021,7 +1021,7 @@ public final class Pm { } else if (opt.equals("-d")) { } else if (opt.equals("-d")) { params.installFlags |= PackageManager.INSTALL_ALLOW_DOWNGRADE; params.installFlags |= PackageManager.INSTALL_ALLOW_DOWNGRADE; } else if (opt.equals("-p")) { } else if (opt.equals("-p")) { params.fullInstall = false; params.mode = InstallSessionParams.MODE_INHERIT_EXISTING; } else if (opt.equals("-S")) { } else if (opt.equals("-S")) { params.deltaSize = Long.parseLong(nextOptionData()); params.deltaSize = Long.parseLong(nextOptionData()); params.progressMax = (int) params.deltaSize; params.progressMax = (int) params.deltaSize; Loading
core/java/android/app/ApplicationPackageManager.java +10 −1 Original line number Original line Diff line number Diff line Loading @@ -1520,7 +1520,7 @@ final class ApplicationPackageManager extends PackageManager { } } @Override @Override public PackageInstaller getPackageInstaller() { public PackageInstaller getInstaller() { try { try { return new PackageInstaller(this, mPM.getPackageInstaller(), mContext.getPackageName(), return new PackageInstaller(this, mPM.getPackageInstaller(), mContext.getPackageName(), mContext.getUserId()); mContext.getUserId()); Loading @@ -1529,6 +1529,15 @@ final class ApplicationPackageManager extends PackageManager { } } } } @Override public boolean isPackageAvailable(String packageName) { try { return mPM.isPackageAvailable(packageName, mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } /** /** * @hide * @hide */ */ Loading
core/java/android/content/pm/InstallSessionInfo.java +64 −4 Original line number Original line Diff line number Diff line Loading @@ -20,15 +20,25 @@ import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; /** {@hide} */ /** * Details for an active install session. */ public class InstallSessionInfo implements Parcelable { public class InstallSessionInfo implements Parcelable { /** {@hide} */ public int sessionId; public int sessionId; /** {@hide} */ public String installerPackageName; public String installerPackageName; /** {@hide} */ public int progress; public int progress; public boolean fullInstall; /** {@hide} */ public int mode; /** {@hide} */ public String packageName; public String packageName; /** {@hide} */ public Bitmap icon; public Bitmap icon; /** {@hide} */ public CharSequence title; public CharSequence title; /** {@hide} */ /** {@hide} */ Loading @@ -41,12 +51,62 @@ public class InstallSessionInfo implements Parcelable { installerPackageName = source.readString(); installerPackageName = source.readString(); progress = source.readInt(); progress = source.readInt(); fullInstall = source.readInt() != 0; mode = source.readInt(); packageName = source.readString(); packageName = source.readString(); icon = source.readParcelable(null); icon = source.readParcelable(null); title = source.readString(); title = source.readString(); } } /** * Return the ID for this session. */ public int getSessionId() { return sessionId; } /** * Return the package name of the app that owns this session. */ public String getInstallerPackageName() { return installerPackageName; } /** * Return current overall progress of this session, between 0 and 100. * <p> * Note that this progress may not directly correspond to the value reported * by {@link PackageInstaller.Session#setProgress(int)}, as the system may * carve out a portion of the overall progress to represent its own internal * installation work. */ public int getProgress() { return progress; } /** * Return the package name this session is working with. May be {@code null} * if unknown. */ public String getPackageName() { return packageName; } /** * Return an icon representing the app being installed. May be {@code null} * if unavailable. */ public Bitmap getIcon() { return icon; } /** * Return a title representing the app being installed. May be {@code null} * if unavailable. */ public CharSequence getTitle() { return title; } @Override @Override public int describeContents() { public int describeContents() { return 0; return 0; Loading @@ -58,7 +118,7 @@ public class InstallSessionInfo implements Parcelable { dest.writeString(installerPackageName); dest.writeString(installerPackageName); dest.writeInt(progress); dest.writeInt(progress); dest.writeInt(fullInstall ? 1 : 0); dest.writeInt(mode); dest.writeString(packageName); dest.writeString(packageName); dest.writeParcelable(icon, flags); dest.writeParcelable(icon, flags); dest.writeString(title != null ? title.toString() : null); dest.writeString(title != null ? title.toString() : null); Loading
core/java/android/content/pm/InstallSessionParams.java +74 −9 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.content.pm; package android.content.pm; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.net.Uri; import android.net.Uri; import android.os.Parcel; import android.os.Parcel; Loading @@ -23,13 +24,22 @@ import android.os.Parcelable; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.IndentingPrintWriter; /** {@hide} */ /** * Parameters for creating a new {@link PackageInstaller.Session}. */ public class InstallSessionParams implements Parcelable { public class InstallSessionParams implements Parcelable { // TODO: extend to support remaining VerificationParams // TODO: extend to support remaining VerificationParams /** {@hide} */ /** {@hide} */ public boolean fullInstall; public static final int MODE_INVALID = 0; /** {@hide} */ public static final int MODE_FULL_INSTALL = 1; /** {@hide} */ public static final int MODE_INHERIT_EXISTING = 2; /** {@hide} */ public int mode = MODE_INVALID; /** {@hide} */ /** {@hide} */ public int installFlags; public int installFlags; /** {@hide} */ /** {@hide} */ Loading Loading @@ -58,7 +68,7 @@ public class InstallSessionParams implements Parcelable { /** {@hide} */ /** {@hide} */ public InstallSessionParams(Parcel source) { public InstallSessionParams(Parcel source) { fullInstall = source.readInt() != 0; mode = source.readInt(); installFlags = source.readInt(); installFlags = source.readInt(); installLocation = source.readInt(); installLocation = source.readInt(); signatures = (Signature[]) source.readParcelableArray(null); signatures = (Signature[]) source.readParcelableArray(null); Loading @@ -72,53 +82,108 @@ public class InstallSessionParams implements Parcelable { abiOverride = source.readString(); abiOverride = source.readString(); } } public void setFullInstall(boolean fullInstall) { /** this.fullInstall = fullInstall; * Set session mode indicating that it should fully replace any existing * APKs for this application. */ public void setModeFullInstall() { this.mode = MODE_FULL_INSTALL; } } public void setInstallFlags(int installFlags) { /** this.installFlags = installFlags; * Set session mode indicating that it should inherit any existing APKs for * this application, unless they are explicitly overridden (by split name) * in the session. */ public void setModeInheritExisting() { this.mode = MODE_INHERIT_EXISTING; } } /** * Provide value of {@link PackageInfo#installLocation}, which may be used * to determine where the app will be staged. Defaults to * {@link PackageInfo#INSTALL_LOCATION_INTERNAL_ONLY}. */ public void setInstallLocation(int installLocation) { public void setInstallLocation(int installLocation) { this.installLocation = installLocation; this.installLocation = installLocation; } } /** * Optionally provide the required value of {@link PackageInfo#signatures}. * This can be used to assert that all staged APKs have been signed with * this set of specific certificates. Regardless of this value, all APKs in * the application must have the same signing certificates. */ public void setSignatures(Signature[] signatures) { public void setSignatures(Signature[] signatures) { this.signatures = signatures; this.signatures = signatures; } } /** * Indicate the expected growth in disk usage resulting from this session. * This may be used to ensure enough disk space exists before proceeding, or * to estimate container size for installations living on external storage. * <p> * This value should only reflect APK sizes. */ public void setDeltaSize(long deltaSize) { public void setDeltaSize(long deltaSize) { this.deltaSize = deltaSize; this.deltaSize = deltaSize; } } /** * Set the maximum progress for this session, used for normalization * purposes. * * @see PackageInstaller.Session#setProgress(int) */ public void setProgressMax(int progressMax) { public void setProgressMax(int progressMax) { this.progressMax = progressMax; this.progressMax = progressMax; } } /** * Optionally set the package name this session will be working with. It's * strongly recommended that you provide this value when known. */ public void setPackageName(String packageName) { public void setPackageName(String packageName) { this.packageName = packageName; this.packageName = packageName; } } /** * Optionally set an icon representing the app being installed. */ public void setIcon(Bitmap icon) { public void setIcon(Bitmap icon) { this.icon = icon; this.icon = icon; } } /** * Optionally set a title representing the app being installed. */ public void setTitle(CharSequence title) { public void setTitle(CharSequence title) { this.title = title; this.title = title; } } /** * Optionally set the URI where this package was downloaded from. Used for * verification purposes. * * @see Intent#EXTRA_ORIGINATING_URI */ public void setOriginatingUri(Uri originatingUri) { public void setOriginatingUri(Uri originatingUri) { this.originatingUri = originatingUri; this.originatingUri = originatingUri; } } /** * Optionally set the URI that referred you to install this package. Used * for verification purposes. * * @see Intent#EXTRA_REFERRER */ public void setReferrerUri(Uri referrerUri) { public void setReferrerUri(Uri referrerUri) { this.referrerUri = referrerUri; this.referrerUri = referrerUri; } } /** {@hide} */ /** {@hide} */ public void dump(IndentingPrintWriter pw) { public void dump(IndentingPrintWriter pw) { pw.printPair("fullInstall", fullInstall); pw.printPair("mode", mode); pw.printHexPair("installFlags", installFlags); pw.printHexPair("installFlags", installFlags); pw.printPair("installLocation", installLocation); pw.printPair("installLocation", installLocation); pw.printPair("signatures", (signatures != null)); pw.printPair("signatures", (signatures != null)); Loading @@ -140,7 +205,7 @@ public class InstallSessionParams implements Parcelable { @Override @Override public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) { dest.writeInt(fullInstall ? 1 : 0); dest.writeInt(mode); dest.writeInt(installFlags); dest.writeInt(installFlags); dest.writeInt(installLocation); dest.writeInt(installLocation); dest.writeParcelableArray(signatures, flags); dest.writeParcelableArray(signatures, flags); Loading