PermissionUtils.java

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