마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Uri에서 절대경로 바꾸는 법을 부탁드립니다

0 추천

안녕하세요 하나 질문드릴것이 있습니다 ㅠ

제가 버튼을 누르면 비디오 목록을 요청하고 거기서 비디오를 선택하면 

선택한 비디오 파일의 절대 경로를 구할려고 합니다.

//비디오 목록 요청

startActivityForResult(
        Intent.createChooser(
                new Intent(Intent.ACTION_GET_CONTENT)
                .setType("video/*"), "Choose Video"),
        REQUEST_VIDEO
        );

//intent요청 onactvityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode == RESULT_OK){
        if(requestCode == REQUEST_VIDEO){

            Uri uri = data.getData();

            Toast.makeText(getContext(), "uri입니다 \n" + uri, Toast.LENGTH_SHORT).show();

            String path = getRealPathFromURI(getActivity(),uri);

            Toast.makeText(getContext(), "path입니다 \n" + path, Toast.LENGTH_SHORT).show();



        }
        
    }


}

위의 data.getData로 Uri값이 Content://로 시작하는데 저걸 절대경로로 변환하고 싶어서

밑의 추가 함수를 더했습니다.

public String getRealPathFromURI(Context context, Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

근데 자꾸 Null이 반환 됩니다

uri.getPath()하는것도 절대 경로는 아닌거 같아서 지금 찾고 있는데 null값이 나오거나 다운이 되네요ㅠ

절대 경로를 구하는법좀 부탁드립니다

익명사용자 님이 2017년 1월 13일 질문

2개의 답변

0 추천

MediaStore.Images.Media.DATA => MediaStore.Video.Media.DATA

사실 위 두 상수 모두 "_data" 로 같긴 한데;;; 혹시 모르니 한번 해보시고

 

그래도 마찬가지라면 혹시 onActivityResult에서 나오는 uri 값좀 댓글로 찍어 주시겠어요?

 

Development Guy (70,570 포인트) 님이 2017년 1월 16일 답변
답변 감사합니다
지금 해보니까 Log상에 이렇게 찍혀서 나와서요
content://com.android.providers.media.documents/document/video%3A2626

이걸  변경해야하는데 어떻게 해야할지 ㅠ
음... 혹시 Intent Chooser를 꼭 사용해야 하는 상황이신가요?
그게 아니라면
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, SELECT_VIDEO);

이처럼 해보세요.,
0 추천
aucd29 (218,390 포인트) 님이 2017년 1월 16일 답변
...