maddob
maddob

Reputation: 1009

How to extract the real file URI or file data from a path that looks like "/content:/media/external/video/media/19"?

I am desperately trying to send a captured video to a server. The problem is that the URI that is given by the built-in camera application is not the real file path. It looks like this - /content:/media/external/video/media/19.

How can I access the real path or the data directly from this kind of URIs?

After reading the android documentation I saw that it looks like a content provider's notation, but I still don't have a clue how to reach the data that I need. Please help!!!

thanks in advance

Upvotes: 6

Views: 15317

Answers (2)

R_K
R_K

Reputation: 1023

public String getRealPathFromURI(Context context, Uri contentUri) {
  Cursor cursor = null;
  try { 
    String[] proj = { MediaStore.Images.Media.DATA };
    cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
  } finally {
    if (cursor != null) {
      cursor.close();
    }
  }
}

see following post for Get filename and path from URI from mediastore

Upvotes: 4

CommonsWare
CommonsWare

Reputation: 1006554

How can I access the real path or the data directly from this kind of URIs?

You don't. It might not exist as a file. Or, it might not exist as a file that you can read except via the ContentProvider.

Instead, use a ContentResolver to open an InputStream on that Uri, and use that InputStream to transfer the data to a server.

Upvotes: 4

Related Questions