PermissionUtils.java

 1package eu.siacs.conversations.utils;
 2
 3import android.Manifest;
 4import android.app.Activity;
 5import android.content.pm.PackageManager;
 6import android.os.Build;
 7import androidx.core.app.ActivityCompat;
 8
 9import com.google.common.collect.ImmutableList;
10
11import java.util.List;
12
13public class PermissionUtils {
14
15    public static boolean allGranted(int[] grantResults) {
16        for (int grantResult : grantResults) {
17            if (grantResult != PackageManager.PERMISSION_GRANTED) {
18                return false;
19            }
20        }
21        return true;
22    }
23
24    public static boolean writeGranted(int[] grantResults, String[] permission) {
25        for (int i = 0; i < grantResults.length; ++i) {
26            if (Manifest.permission.WRITE_EXTERNAL_STORAGE.equals(permission[i])) {
27                return grantResults[i] == PackageManager.PERMISSION_GRANTED;
28            }
29        }
30        return false;
31    }
32
33    public static String getFirstDenied(int[] grantResults, String[] permissions) {
34        for (int i = 0; i < grantResults.length; ++i) {
35            if (grantResults[i] == PackageManager.PERMISSION_DENIED) {
36                return permissions[i];
37            }
38        }
39        return null;
40    }
41
42    public static boolean hasPermission(final Activity activity, final List<String> permissions, final int requestCode) {
43        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
44            final ImmutableList.Builder<String> missingPermissions = new ImmutableList.Builder<>();
45            for (final String permission : permissions) {
46                if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
47                    missingPermissions.add(permission);
48                }
49            }
50            final ImmutableList<String> missing = missingPermissions.build();
51            if (missing.size() == 0) {
52                return true;
53            }
54            ActivityCompat.requestPermissions(activity, missing.toArray(new String[0]), requestCode);
55            return false;
56        } else {
57            return true;
58        }
59    }
60}