Permissions utilities
PermissionUtil.java
PermissionUtil.java
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);
}
}
Sample Usage:
Sample Usage:
@Override
public 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();
}
}
@Override
public 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();
}
}
});
}
}