diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-09-19 12:53:22 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-19 12:53:23 -0700 |
commit | ec75fbc7359092834323d3c2b59c10e9c1fb49b8 (patch) | |
tree | 7e1abcdda17f9342e5b023048330b2a5994039eb /src/com/android/packageinstaller/InstallAppProgress.java | |
parent | b1775959ef806b3198b1f2aaedc56ffb4b408510 (diff) | |
parent | aba0bed7a4f6301c6e3067fc799d8ef47aaca0b2 (diff) | |
download | android_packages_apps_PackageInstaller-ec75fbc7359092834323d3c2b59c10e9c1fb49b8.tar.gz android_packages_apps_PackageInstaller-ec75fbc7359092834323d3c2b59c10e9c1fb49b8.tar.bz2 android_packages_apps_PackageInstaller-ec75fbc7359092834323d3c2b59c10e9c1fb49b8.zip |
Merge "Allow side-loading of apps from other users." into jb-mr1-dev
Diffstat (limited to 'src/com/android/packageinstaller/InstallAppProgress.java')
-rwxr-xr-x | src/com/android/packageinstaller/InstallAppProgress.java | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/com/android/packageinstaller/InstallAppProgress.java b/src/com/android/packageinstaller/InstallAppProgress.java index a2feacf2..e281fd37 100755 --- a/src/com/android/packageinstaller/InstallAppProgress.java +++ b/src/com/android/packageinstaller/InstallAppProgress.java @@ -163,7 +163,7 @@ public class InstallAppProgress extends Activity implements View.OnClickListener mPackageURI = intent.getData(); final String scheme = mPackageURI.getScheme(); - if (scheme != null && !"file".equals(scheme)) { + if (scheme != null && !"file".equals(scheme) && !"package".equals(scheme)) { throw new IllegalArgumentException("unexpected scheme " + scheme); } @@ -227,8 +227,14 @@ public class InstallAppProgress extends Activity implements View.OnClickListener Log.w(TAG, "Replacing package:" + mAppInfo.packageName); } - final File sourceFile = new File(mPackageURI.getPath()); - PackageUtil.AppSnippet as = PackageUtil.getAppSnippet(this, mAppInfo, sourceFile); + final PackageUtil.AppSnippet as; + if ("package".equals(mPackageURI.getScheme())) { + as = new PackageUtil.AppSnippet(pm.getApplicationLabel(mAppInfo), + pm.getApplicationIcon(mAppInfo)); + } else { + final File sourceFile = new File(mPackageURI.getPath()); + as = PackageUtil.getAppSnippet(this, mAppInfo, sourceFile); + } mLabel = as.label; PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet); mStatusTextView = (TextView)findViewById(R.id.center_text); @@ -250,8 +256,19 @@ public class InstallAppProgress extends Activity implements View.OnClickListener referrer, null); PackageInstallObserver observer = new PackageInstallObserver(); - pm.installPackageWithVerificationAndEncryption(mPackageURI, observer, installFlags, - installerPackageName, verificationParams, null); + if ("package".equals(mPackageURI.getScheme())) { + try { + pm.installExistingPackage(mAppInfo.packageName); + observer.packageInstalled(mAppInfo.packageName, + PackageManager.INSTALL_SUCCEEDED); + } catch (PackageManager.NameNotFoundException e) { + observer.packageInstalled(mAppInfo.packageName, + PackageManager.INSTALL_FAILED_INVALID_APK); + } + } else { + pm.installPackageWithVerificationAndEncryption(mPackageURI, observer, installFlags, + installerPackageName, verificationParams, null); + } } @Override |