Try with this code:
public void requestAppPermissions(final String[] requestedPermissions,
final int requestCode, setPermissionListener listener) {
this.permissionListener = listener;
int permissionCheck = PackageManager.PERMISSION_GRANTED;
for (String permission : requestedPermissions) {
permissionCheck = permissionCheck + ContextCompat.checkSelfPermission(this, permission);
}
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, requestedPermissions, requestCode);
} else {
if (permissionListener != null) permissionListener.onPermissionGranted(requestCode);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED) {
if (permissionListener != null) permissionListener.onPermissionGranted(requestCode);
break;
} else if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
if (permissionListener != null) permissionListener.onPermissionDenied(requestCode);
break;
} else {
if (permissionListener != null)
permissionListener.onPermissionNeverAsk(requestCode);
break;
}
}
}
public interface setPermissionListener {
void onPermissionGranted(int requestCode);
void onPermissionDenied(int requestCode);
void onPermissionNeverAsk(int requestCode);
}
invocation:
private void askPermission() {
requestAppPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION},
Constants.PERMISSION_STORAGE,
new setPermissionListener() {
@Override
public void onPermissionGranted(int requestCode) {
selectImageDialog();
}
@Override
public void onPermissionDenied(int requestCode) {
showSnackbar(mBinder.getRoot(), getString(R.string.critical_permission_denied),
Snackbar.LENGTH_INDEFINITE, getString(R.string.allow), new OnSnackbarActionListener() {
@Override
public void onAction() {
askPermission();
}
});
}
@Override
public void onPermissionNeverAsk(int requestCode) {
showPermissionSettingDialog(getString(R.string.need_permission));
}
});
}