public class PermissionsUtil { public interface IPermissionResult{ void grantedPermissions(String[] permission); } public static boolean isPermissionGranted(Context context, String permission){ return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED; } public static void requestPermissions(Context context, int requestCodeOfPermission, String... permissions) { ActivityCompat.requestPermissions((Activity) context, permissions, requestCodeOfPermission); } public static void onRequestPermissionsResult( String[] permissions, int[] grantResults, IPermissionResult iPermissionResult){ List<String> grantedPermissions = new ArrayList<>(); if (grantResults != null && grantResults.length > 0) { for (int i = 0; i < grantResults.length; i++) { if(grantResults[i] == PackageManager.PERMISSION_GRANTED) grantedPermissions.add(permissions[i]); } iPermissionResult.grantedPermissions(grantedPermissions.toArray(new String[grantedPermissions.size()])); } } public static boolean isPermissionExists(String[] permissions, String permission) { return Arrays.asList(permissions).contains(permission); }}@Overridepublic void onMapReady(GoogleMap googleMap) { mGoogleMap = googleMap; if(!PermissionsUtil.isPermissionGranted(this, Manifest.permission.ACCESS_FINE_LOCATION) || !PermissionsUtil.isPermissionGranted(this, Manifest.permission.ACCESS_COARSE_LOCATION)) { PermissionsUtil.requestPermissions(this, REQUEST_CODE_FOR_PERMISSION_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION); }else { setupMap(); }}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull final String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_FOR_PERMISSION_LOCATION) { PermissionsUtil.onRequestPermissionsResult(permissions, grantResults, new PermissionsUtil.IPermissionResult() { @Override public void grantedPermissions(String[] permission) { if (PermissionsUtil.isPermissionExists(permission, Manifest.permission.ACCESS_FINE_LOCATION) || PermissionsUtil.isPermissionExists(permission, Manifest.permission.ACCESS_COARSE_LOCATION)) { setupMap(); } } }); }}