Read and apply 'installLocation'
... when installing app via packageInstaller.
This allows the apk to have some limited control over where it will be
installed.
Change-Id: Id5140e7d2a2e3b8dd59815a0febf5c05cee08fbf
Fixes: 30056625
diff --git a/src/com/android/packageinstaller/InstallAppProgress.java b/src/com/android/packageinstaller/InstallAppProgress.java
index 7554704..a2bbfc0 100755
--- a/src/com/android/packageinstaller/InstallAppProgress.java
+++ b/src/com/android/packageinstaller/InstallAppProgress.java
@@ -34,6 +34,7 @@
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.PackageParser;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
@@ -353,6 +354,13 @@
params.originatingUid = getIntent().getIntExtra(Intent.EXTRA_ORIGINATING_UID,
UID_UNKNOWN);
+ File file = new File(mPackageURI.getPath());
+ try {
+ params.setInstallLocation(PackageParser.parsePackageLite(file, 0).installLocation);
+ } catch (PackageParser.PackageParserException e) {
+ Log.e(TAG, "Cannot parse package " + file + ". Assuming defaults.");
+ }
+
mInstallHandler.post(new Runnable() {
@Override
public void run() {