Skip to content

Instantly share code, notes, and snippets.

@yyunikov
Created February 18, 2016 10:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yyunikov/9bc2962feb9df7522fab to your computer and use it in GitHub Desktop.
Save yyunikov/9bc2962feb9df7522fab to your computer and use it in GitHub Desktop.
Useful methods for requesting permissions on Android 6.0 and above
public final class PermissionUtils {
private PermissionUtils() {}
public static void askPermissionIfNeeded(@NonNull final Activity activity,
@NonNull final View layoutView,
@StringRes final int message,
final int requestCode,
@NonNull final String[] permissions) {
if (!permissionsGranted(activity, permissions)) {
if (shouldShowRequestPermissionRationale(activity, permissions)) {
Snackbar.make(layoutView, message, Snackbar.LENGTH_INDEFINITE)
.setAction(android.R.string.ok, view -> {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
})
.show();
} else {
// permission has not been granted yet, request it directly.
ActivityCompat.requestPermissions(activity, permissions, requestCode);
}
}
}
public static boolean permissionsGranted(@NonNull final Activity activity, @NonNull final String[] permissions) {
for (final String permission: permissions) {
if (ActivityCompat.checkSelfPermission(activity, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
public static boolean permissionsGranted(@PermissionChecker.PermissionResult final int... grantResults) {
if(grantResults.length < 1){
return false;
}
for (final int result : grantResults) {
if (result != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
private static boolean shouldShowRequestPermissionRationale(final Activity activity, @NonNull final String[] permissions) {
for (final String permission: permissions) {
if (!ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {
return false;
}
}
return true;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment