【发布时间】:2017-03-13 21:41:24
【问题描述】:
我有一个方法如下:
private String getRealPathFromUriForVideos(Uri selectedVideoUri) {
String wholeID = DocumentsContract.getDocumentId(selectedVideoUri);
String id = wholeID.split(":")[1];
String[] column = { MediaStore.Video.Media.DATA };
String sel = MediaStore.Video.Media._ID + "=?";
Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, column, sel, new String[]{ id }, null);
String filePath = "";
int columnIndex = cursor.getColumnIndex(column[0]);
if (cursor.moveToFirst()) {
filePath = cursor.getString(columnIndex);
}
cursor.close();
return filePath;
}
这可以很好地获取用户选择的视频文件。但是,我希望允许用户也创建新视频(从我的应用程序),然后从那里获取 URI 和文件。新创建的视频的 URI 是:content://media/external/video/media/41。对于选定的视频,例如 content://com.android.providers.media.documents/document/video%3A42。
它适用于第二个,但不适用于第一个。第一个我得到 IllegalArgumentException 因为它不是文档 URI。如何从第一个 URI 获取文件?
【问题讨论】:
-
你为什么想要“文件”?
-
需要能够上传到我的服务器。
-
您不需要文件路径。只需为此使用uri。请准确解释为什么需要文件系统路径而不是内容方案。
-
我只是解释了为什么我需要它并找到了解决方案。谢谢。上传我需要访问我的代码文件的对象。
标签: android uri android-contentresolver