如何从看起来像“/ content:/ media / external / video / media / 19”的路径中提取真实文件URI或文件数据?

时间:2012-03-02 14:30:36

标签: android

我正在拼命尝试将捕获的视频发送到服务器。问题是内置相机应用程序提供的URI不是真正的文件路径。它看起来像这样 - /content:/media/external/video/media/19

如何直接从这种URI访问真实路径或数据?

在阅读了android文档之后,我看到它看起来像是内容提供者的符号,但我仍然不知道如何获取我需要的数据。请帮忙!!!

提前致谢

2 个答案:

答案 0 :(得分:3)

  

如何直接从这种URI访问真实路径或数据?

你没有。它可能不作为文件存在。或者,它可能不会作为您可以阅读的文件存在,除非通过ContentProvider

相反,使用ContentResolverInputStream上打开Uri,然后使用InputStream将数据传输到服务器。

答案 1 :(得分:1)

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();
    }
  }
}

请参阅以下帖子 Get filename and path from URI from mediastore