public InputStream openForRead(final Uri uri, final boolean suppressWarningForUser) {
        if (isEmpty(uri)) {
            return null;
        }

        try {
            return this.context.getContentResolver().openInputStream(uri);
        } catch (IOException | SecurityException | IllegalArgumentException se) {
            //SecurityException is thrown for valid Uri which we have no permission to access
            //IllegalArgumentException is thrown for invalid Uri (e.g. because a folder/file was deleted meanwhile)
            reportProblem(R.string.contentstorage_err_read_failed, se, suppressWarningForUser, uri);
        }
        return null;
    }
Opens an Uri for reading. Remember to close stream after usage! Returns null if Uri can't be opened for reading.

@param suppressWarningForUser if true then failure to open will NOT result in a toast to user
main/src/main/java/cgeo/geocaching/storage/ContentStorage.java