From c69cd34d69d5a018544a0dc9aa5b5a99adc33f1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Magalh=C3=A3es?= Date: Mon, 23 Oct 2017 15:30:25 -0200 Subject: [PATCH 1/2] [FIX] [ANDROID] Requesting permission results into ArrayIndexOutOfBoundsException - Issue 15928 * TestPlan: Uses existing code in android test folder * Motivation: Fixing when asked for permission -> press home button -> open the App again (via shortcut). Will causes ArrayIndexOutOfBounds. --- .../react/modules/permissions/PermissionsModule.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java index 6054964349d1c9..e78cda159e24f3 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java @@ -15,7 +15,6 @@ import android.os.Build; import android.os.Process; import android.util.SparseArray; - import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; @@ -27,7 +26,6 @@ import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.modules.core.PermissionAwareActivity; import com.facebook.react.modules.core.PermissionListener; - import java.util.ArrayList; /** @@ -116,7 +114,7 @@ mRequestCode, new Callback() { @Override public void invoke(Object... args) { int[] results = (int[]) args[0]; - if (results[0] == PackageManager.PERMISSION_GRANTED) { + if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) { promise.resolve(GRANTED); } else { PermissionAwareActivity activity = (PermissionAwareActivity) args[1]; @@ -175,7 +173,8 @@ public void invoke(Object... args) { PermissionAwareActivity activity = (PermissionAwareActivity) args[1]; for (int j = 0; j < permissionsToCheck.size(); j++) { String permission = permissionsToCheck.get(j); - if (results[j] == PackageManager.PERMISSION_GRANTED) { + + if (results.length > 0 && results[j] == PackageManager.PERMISSION_GRANTED) { grantedPermissions.putString(permission, GRANTED); } else { if (activity.shouldShowRequestPermissionRationale(permission)) { From ee09f16b3159f1a13abfe5c17afb2efec4363c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Magalh=C3=A3es?= Date: Mon, 23 Oct 2017 23:15:51 -0200 Subject: [PATCH 2/2] Remove blank space --- .../facebook/react/modules/permissions/PermissionsModule.java | 1 - 1 file changed, 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java index e78cda159e24f3..634dc89555fc05 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/permissions/PermissionsModule.java @@ -173,7 +173,6 @@ public void invoke(Object... args) { PermissionAwareActivity activity = (PermissionAwareActivity) args[1]; for (int j = 0; j < permissionsToCheck.size(); j++) { String permission = permissionsToCheck.get(j); - if (results.length > 0 && results[j] == PackageManager.PERMISSION_GRANTED) { grantedPermissions.putString(permission, GRANTED); } else {