summaryrefslogtreecommitdiffstats
path: root/core/java/android/content/pm
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2014-05-22 23:52:41 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-22 23:52:41 +0000
commit5ec9aed64cd03545eded622cca214c83c170ab22 (patch)
tree2be654fe3ec9514f2e03322c2033fcff8da5ca38 /core/java/android/content/pm
parent6b7b34849a19aff673690f368b85b0c394b31b53 (diff)
parent78cc340c2de873d6995c283b777476f7237d690f (diff)
downloadframeworks_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.java16
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();
}