Merge "Handle ParcelableException instead of crashing system server"
am: 592266cbf1
Change-Id: I039cf08cb546bc0e84f49437d1c5897ff359f307
This commit is contained in:
committed by
android-build-merger
commit
48a435ea89
@@ -41,6 +41,7 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.ParcelableException;
|
||||
import android.os.PowerManager;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -414,29 +415,28 @@ public class StagingManager {
|
||||
} else {
|
||||
params.installFlags |= PackageManager.INSTALL_DISABLE_VERIFICATION;
|
||||
}
|
||||
int apkSessionId = mPi.createSession(
|
||||
params, originalSession.getInstallerPackageName(),
|
||||
0 /* UserHandle.SYSTEM */);
|
||||
PackageInstallerSession apkSession = mPi.getSession(apkSessionId);
|
||||
|
||||
try {
|
||||
int apkSessionId = mPi.createSession(
|
||||
params, originalSession.getInstallerPackageName(),
|
||||
0 /* UserHandle.SYSTEM */);
|
||||
PackageInstallerSession apkSession = mPi.getSession(apkSessionId);
|
||||
apkSession.open();
|
||||
for (String apkFilePath : apkFilePaths) {
|
||||
File apkFile = new File(apkFilePath);
|
||||
ParcelFileDescriptor pfd = ParcelFileDescriptor.open(apkFile,
|
||||
ParcelFileDescriptor.MODE_READ_ONLY);
|
||||
long sizeBytes = pfd.getStatSize();
|
||||
long sizeBytes = (pfd == null) ? -1 : pfd.getStatSize();
|
||||
if (sizeBytes < 0) {
|
||||
Slog.e(TAG, "Unable to get size of: " + apkFilePath);
|
||||
return null;
|
||||
}
|
||||
apkSession.write(apkFile.getName(), 0, sizeBytes, pfd);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
return apkSession;
|
||||
} catch (IOException | ParcelableException e) {
|
||||
Slog.e(TAG, "Failure to install APK staged session " + originalSession.sessionId, e);
|
||||
return null;
|
||||
}
|
||||
return apkSession;
|
||||
}
|
||||
|
||||
private boolean commitApkSession(@NonNull PackageInstallerSession apkSession,
|
||||
|
||||
Reference in New Issue
Block a user