diff options
author | Jeff Sharkey <jsharkey@android.com> | 2014-05-22 23:52:41 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-05-22 23:52:41 +0000 |
commit | 5ec9aed64cd03545eded622cca214c83c170ab22 (patch) | |
tree | 2be654fe3ec9514f2e03322c2033fcff8da5ca38 /core/java/android/content/pm | |
parent | 6b7b34849a19aff673690f368b85b0c394b31b53 (diff) | |
parent | 78cc340c2de873d6995c283b777476f7237d690f (diff) | |
download | frameworks_base-5ec9aed64cd03545eded622cca214c83c170ab22.zip frameworks_base-5ec9aed64cd03545eded622cca214c83c170ab22.tar.gz frameworks_base-5ec9aed64cd03545eded622cca214c83c170ab22.tar.bz2 |
Merge "Offer to stream and fsync() install sessions."
Diffstat (limited to 'core/java/android/content/pm')
-rw-r--r-- | core/java/android/content/pm/PackageInstaller.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index d7bd473..4672015 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -19,9 +19,12 @@ package android.content.pm; import android.app.PackageInstallObserver; import android.app.PackageUninstallObserver; import android.content.pm.PackageManager.NameNotFoundException; +import android.os.FileBridge; import android.os.ParcelFileDescriptor; import android.os.RemoteException; +import java.io.OutputStream; + /** {@hide} */ public class PackageInstaller { private final PackageManager mPm; @@ -127,10 +130,17 @@ public class PackageInstaller { } } - public ParcelFileDescriptor openWrite(String overlayName, long offsetBytes, - long lengthBytes) { + /** + * Open an APK file for writing, starting at the given offset. You can + * then stream data into the file, periodically calling + * {@link OutputStream#flush()} to ensure bytes have been written to + * disk. + */ + public OutputStream openWrite(String splitName, long offsetBytes, long lengthBytes) { try { - return mSession.openWrite(overlayName, offsetBytes, lengthBytes); + final ParcelFileDescriptor clientSocket = mSession.openWrite(splitName, + offsetBytes, lengthBytes); + return new FileBridge.FileBridgeOutputStream(clientSocket.getFileDescriptor()); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } |