private void onImageFromStorageResult(final IntentContextData intentContextData, final Intent data) {

        if (data == null) {
            failIntent(intentContextData);
            return;
        }

        final List<Uri> result = new ArrayList<>();
        Uri singleUri = null;

        final Uri imageUri = data.getData();
        if (imageUri != null) {
            singleUri = imageUri;
            if (checkImageContent(imageUri, intentContextData.onlyImages)) {
                result.add(imageUri);
            }
        }

        if (data.getClipData() != null) {
            for (int idx = 0; idx < data.getClipData().getItemCount(); idx++) {
                final Uri uri = data.getClipData().getItemAt(idx).getUri();
                // compare with "singleUri" to prevent duplicate image adding
                // (in some cases on multiselect, "getData()" is filled with first entry of "getClipData()" e.g. when Google Photos is used)
                if (uri != null && !uri.equals(singleUri) && checkImageContent(uri, intentContextData.onlyImages)) {
                    result.add(uri);
                }
            }
        }

        if (result.isEmpty()) {
            failIntent(intentContextData);
        } else {
            call(intentContextData, result);
        }
    }
lets the user create a new image via camera for strict usage by c:geo.
This method will create both a copy of the created image in public image storage as well as a local image copy
in private app storage for further processing by c:geo
This function wil only work if you call {@link #onActivityResult(int, int, Intent)} in
your activity as explained there.

@param fileid        an id which will be part of resulting image name (e.g. a cache code)
@param callOnFailure if true, then callback will be called also on image shooting failure (with img=null)
main/src/main/java/cgeo/geocaching/ui/ImageActivityHelper.java