2016-10-05 2 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; 
} 

내가 그 방법에서 널 (null)가 계속! 경로를 얻은 후에 File 개체가 필요합니다. 그 메소드가 왜 null 값을 주는가? 내가 여기서 누락 된 것이 있습니까?

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

답변

2

나는과 같이 그것을 할 수 있었다
관련 문제