/** * Checks whether you have been granted a particular permission. * This method is similar to {@link Context#checkSelfPermission(String)}, * but returns a boolean value instead of integer value. * * @param context Provide a context. Can't be {@code null}. * @param permission A permission that should be checked. Can't be {@code null}. * @return {@code true} when permission is granted, otherwise {@code false}. */ public static boolean checkPermission(Context context, String permission) { return checkPermissionInt(context, permission) == PackageManager.PERMISSION_GRANTED; }
private static int[] getPermissionGrants(Context context, String[] permissions) { final int[] grantResults = new int[permissions.length]; final int permissionCount = permissions.length; for (int i = 0; i < permissionCount; i++) { grantResults[i] = Permissive.checkPermissionInt(context, permissions[i]); } return grantResults; }
/** * Filters all provided permissions and returns only granted or denied. * * @param context Provide a context. Can't be {@code null}. * @param permissions Permissions that should be checked. Can't be {@code null}. * @param filter One of: {@link PackageManager#PERMISSION_GRANTED} or {@link PackageManager#PERMISSION_DENIED} * @return Permissions that match the given filter flag. */ public static String[] filterPermissions(Context context, String[] permissions, int filter) { final ArrayList<String> filtered = new ArrayList<>(); for (String permission : permissions) { if (checkPermissionInt(context, permission) == filter) { filtered.add(permission); } } return filtered.toArray(new String[filtered.size()]); }
/** * @param activity An Activity is required here. * @param permissions An array of permissions to be checked. * @return An array of permissions that may require a rationale to be shown. */ static String[] getPermissionsRequiringRationale(Activity activity, String[] permissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { final List<String> rationalePermissions = new ArrayList<>(); for (String permission : permissions) { if (checkPermissionInt(activity, permission) == PackageManager.PERMISSION_DENIED && activity.shouldShowRequestPermissionRationale(permission)) { rationalePermissions.add(permission); } } return rationalePermissions.toArray(new String[rationalePermissions.size()]); } return new String[0]; }