Skip to content

Instantly share code, notes, and snippets.

@sebastiandeutsch
Created May 12, 2016 22:46
Show Gist options
  • Save sebastiandeutsch/f707e7645554df8c48a7fd2146a68955 to your computer and use it in GitHub Desktop.
Save sebastiandeutsch/f707e7645554df8c48a7fd2146a68955 to your computer and use it in GitHub Desktop.
An extension of FileProvider that actually works.
public class BetterFileProvider extends android.support.v4.content.FileProvider {
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Cursor source = super.query(uri, projection, selection, selectionArgs, sortOrder);
String[] columnNames = source.getColumnNames();
String[] newColumnNames = columnNamesWithData(columnNames);
MatrixCursor cursor = new MatrixCursor(newColumnNames, source.getCount());
source.moveToPosition(-1);
while (source.moveToNext()) {
MatrixCursor.RowBuilder row = cursor.newRow();
for (int i = 0; i < columnNames.length; i++) {
row.add(source.getString(i));
}
}
return cursor;
}
private String[] columnNamesWithData(String[] columnNames) {
for (String columnName : columnNames)
if (MediaStore.MediaColumns.DATA.equals(columnName))
return columnNames;
String[] newColumnNames = Arrays.copyOf(columnNames, columnNames.length + 1);
newColumnNames[columnNames.length] = MediaStore.MediaColumns.DATA;
return newColumnNames;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment