From 318f95b51e7ca7f66496a7f658cc1c8d253fdc23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 27 Jul 2016 16:23:26 +0200 Subject: [PATCH] Fix install on Android 2.3 Cause: setType clears previously setUri. Fixes #718 --- .../fdroid/installer/DefaultInstallerActivity.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java b/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java index 18defb767..b022369ad 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java @@ -89,7 +89,6 @@ public class DefaultInstallerActivity extends FragmentActivity { } Intent intent = new Intent(); - intent.setData(uri); // Note regarding EXTRA_NOT_UNKNOWN_SOURCE: // works only when being installed as system-app @@ -97,22 +96,25 @@ public class DefaultInstallerActivity extends FragmentActivity { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { intent.setAction(Intent.ACTION_VIEW); - intent.setType("application/vnd.android.package-archive"); + intent.setDataAndType(uri, "application/vnd.android.package-archive"); } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { intent.setAction(Intent.ACTION_INSTALL_PACKAGE); + intent.setData(uri); intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true); } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { intent.setAction(Intent.ACTION_INSTALL_PACKAGE); + intent.setData(uri); intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); } else { // Android N intent.setAction(Intent.ACTION_INSTALL_PACKAGE); - intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); - intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); + intent.setData(uri); // grant READ permission for this content Uri intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + intent.putExtra(Intent.EXTRA_RETURN_RESULT, true); + intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true); } try {