code: @Nullable
      @Override
      public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {
          if (ACRA.DEV_LOGGING) ACRA.log.d(ACRA.LOG_TAG, "Query: " + uri);
          final File file = getFileForUri(uri);
          if (file == null) {
              return null;
          }
          if (projection == null) {
              projection = COLUMNS;
          }
          final Map<String, Object> columnValueMap = new LinkedHashMap<>();
          for (String column : projection) {
              if (column.equals(OpenableColumns.DISPLAY_NAME)) {
                  columnValueMap.put(OpenableColumns.DISPLAY_NAME, file.getName());
              } else if (column.equals(OpenableColumns.SIZE)) {
                  columnValueMap.put(OpenableColumns.SIZE, file.length());
              }
          }
          final MatrixCursor cursor = new MatrixCursor(columnValueMap.keySet().toArray(new String[columnValueMap.size()]), 1);
          cursor.addRow(columnValueMap.values());
          return cursor;
      }
docs: Provides file metadata
  
  @param uri           the file uri
  @param projection    any combination of {@link OpenableColumns#DISPLAY_NAME} and {@link OpenableColumns#SIZE}
  @param selection     ignored
  @param selectionArgs ignored
  @param sortOrder     ignored
  @return file metadata in a cursor with a single row