无法获取Android中视频的路径

无法获取Android中视频的路径,android,uri,Android,Uri,我有这样一个URI:content://com.android.providers.media.documents/document/video%3A818。我正在尝试获取路径,以便使用以下方法上载到我的服务器: private String getRealPathFromURIVideo(Uri contentUri) { String[] proj = { MediaStore.Images.Media.DATA }; CursorLoader loader = new Cu

我有这样一个URI:
content://com.android.providers.media.documents/document/video%3A818
。我正在尝试获取路径,以便使用以下方法上载到我的服务器:

private String getRealPathFromURIVideo(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    CursorLoader loader = new CursorLoader(this, contentUri, proj, null, null, null);
    Cursor cursor = loader.loadInBackground();
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    String result = cursor.getString(column_index);
    cursor.close();
    return result;
}
我还尝试了以下方法:

private String getFilePathFromContentUri(Uri selectedVideoUri) {
    String filePath;
    String[] filePathColumn = {MediaStore.MediaColumns.DATA};

    Cursor cursor = getContentResolver().query(selectedVideoUri, filePathColumn, null, null, null);
    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    filePath = cursor.getString(columnIndex);
    cursor.close();
    return filePath;
}

我一直从那个方法得到空值!获取路径后,我需要
文件
对象。为什么那个方法给我空值?这里有我遗漏的东西吗?

我可以这样做:

private String getRealPathFromURIForVideo(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;
}