From 69e25468214a8e2d6ba054ed4cd221f27f0e1384 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= <dominik@dominikschuermann.de>
Date: Fri, 13 May 2016 00:20:08 +0300
Subject: [PATCH] Workaround for Android N2 preview bug with
 EXTRA_RETURN_RESULT

---
 .../fdroid/installer/DefaultSdk14Installer.java      | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/org/fdroid/fdroid/installer/DefaultSdk14Installer.java b/app/src/main/java/org/fdroid/fdroid/installer/DefaultSdk14Installer.java
index c0b1d09d0..6ca757dc6 100644
--- a/app/src/main/java/org/fdroid/fdroid/installer/DefaultSdk14Installer.java
+++ b/app/src/main/java/org/fdroid/fdroid/installer/DefaultSdk14Installer.java
@@ -56,12 +56,16 @@ public class DefaultSdk14Installer extends Installer {
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_INSTALL_PACKAGE);
         intent.setData(Uri.fromFile(apkFile));
-        intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+        // EXTRA_RETURN_RESULT throws a RuntimeException on N
+        // https://gitlab.com/fdroid/fdroidclient/issues/631
+        if (!"N".equals(Build.VERSION.CODENAME)) {
+            intent.putExtra(Intent.EXTRA_RETURN_RESULT, true);
+        }
 
         // following extras only work when being installed as system-app
         // https://code.google.com/p/android/issues/detail?id=42253
         intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
-        if (android.os.Build.VERSION.SDK_INT < 16) {
+        if (Build.VERSION.SDK_INT < 16) {
             // deprecated in Android 4.1
             intent.putExtra(Intent.EXTRA_ALLOW_REPLACE, true);
         }
@@ -103,6 +107,10 @@ public class DefaultSdk14Installer extends Installer {
                     mCallback.onError(InstallerCallback.OPERATION_INSTALL,
                             InstallerCallback.ERROR_CODE_OTHER);
                 }
+                // Fallback on N for https://gitlab.com/fdroid/fdroidclient/issues/631
+                if ("N".equals(Build.VERSION.CODENAME)) {
+                    mCallback.onSuccess(InstallerCallback.OPERATION_INSTALL);
+                }
 
                 return true;
             case REQUEST_CODE_DELETE: