2016-10-05 15 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値を与えていますか?私がここで紛失しているものはありますか?

答えて

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; 
} 
関連する問題