From 1a03b8fc1d14e051980ee4885ecd75340dc7d280 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 4 Nov 2021 10:39:09 -0400 Subject: [PATCH] Don't ask for permissions if none are needed. --- .../securesms/permissions/Permissions.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java b/app/src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java index 79f390411f..b61f4021d5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java +++ b/app/src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java @@ -24,6 +24,7 @@ import androidx.fragment.app.Fragment; import com.annimon.stream.Stream; import com.annimon.stream.function.Consumer; +import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.util.LRUCache; import org.thoughtcrime.securesms.util.ServiceUtil; @@ -36,6 +37,8 @@ import java.util.Map; public class Permissions { + private static final String TAG = Log.tag(Permissions.class); + private static final Map OUTSTANDING = new LRUCache<>(2); public static PermissionsBuilder with(@NonNull Activity activity) { @@ -202,11 +205,26 @@ public class Permissions { } private static void requestPermissions(@NonNull Activity activity, int requestCode, String... permissions) { - ActivityCompat.requestPermissions(activity, filterNotGranted(activity, permissions), requestCode); + String[] neededPermissions = filterNotGranted(activity, permissions); + + if (neededPermissions.length == 0) { + Log.i(TAG, "No permissions needed!"); + return; + } + + ActivityCompat.requestPermissions(activity, neededPermissions, requestCode); } private static void requestPermissions(@NonNull Fragment fragment, int requestCode, String... permissions) { - fragment.requestPermissions(filterNotGranted(fragment.getContext(), permissions), requestCode); + String[] neededPermissions = filterNotGranted(fragment.requireContext(), permissions); + + if (neededPermissions.length == 0) { + Log.i(TAG, "No permissions needed!"); + return; + } + + + fragment.requestPermissions(filterNotGranted(fragment.requireContext(), permissions), requestCode); } private static String[] filterNotGranted(@NonNull Context context, String... permissions) {