private boolean checkImageContent(final Uri imageUri, final boolean checkMimeType) {
        if (imageUri == null) {
            ActivityMixin.showToast(context, R.string.err_acquire_image_failed);
            return false;
        }

        InputStream ignore = null;
        try {
            ignore = context.getContentResolver().openInputStream(imageUri);
        } catch (IOException ie) {
            ActivityMixin.showToast(context, R.string.err_acquire_image_failed);
            return false;
        } finally {
            IOUtils.closeQuietly(ignore);
        }

        final String mimeType = context.getContentResolver().getType(imageUri);
        if (checkMimeType && (!("image/jpeg".equals(mimeType) || "image/png".equals(mimeType) || "image/gif".equals(mimeType)))) {
            ActivityMixin.showToast(context, R.string.err_acquire_image_unsupported_format);
            return false;
        }
        return true;
    }
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