2016-10-05 35 views
1

我有一個如下的URI:content://com.android.providers.media.documents/document/video%3A818。我試圖獲取路徑,這樣我可以上傳到我的服務器用下面的方法:無法獲取Android中的視頻路徑

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

我不斷收到來自法空!獲得路徑後,我需要File對象。爲什麼該方法給我空值?有什麼我在這裏失蹤?

回答

2

我能夠做到這一點,像這樣:

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