Don't ask for permissions if none are needed.

This commit is contained in:
Greyson Parrelli 2021-11-04 10:39:09 -04:00
parent 049ba6a706
commit 1a03b8fc1d

View file

@ -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<Integer, PermissionsRequest> 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) {