private void requestCameraPermissions() {
logger.w("Write External permission is not granted. Requesting permission");
ArrayList<String> permissions = new ArrayList<>(2);
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.CAMERA);
}
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (checkForRationale(permissions)) {
requestPermissions(permissions.toArray(new String[permissions.size()]), RC_PERMISSION_REQUEST_CAMERA);
} else {
final String permission = ImagePickerPreferences.PREF_CAMERA_REQUESTED;
if (!preferences.isPermissionRequested(permission)) {
preferences.setPermissionRequested(permission);
requestPermissions(permissions.toArray(new String[permissions.size()]), RC_PERMISSION_REQUEST_CAMERA);
} else {
if (isCameraOnly) {
Toast.makeText(getActivity().getApplicationContext(),
getString(R.string.ef_msg_no_camera_permission), Toast.LENGTH_SHORT).show();
interactionListener.cancel();
} else {
snackBarView.show(R.string.ef_msg_no_camera_permission, v -> openAppSettings());
}
}
}
}