본문 바로가기
Android

[Android] EXTERNAL 저장소의 미디어 파일 가져오기

by 준그래머 2023. 10. 26.
반응형

EXTERNAL 저장소의 미디어 파일 가져오기

EXTERNAL 저장소에 있는 미디어 파일을 불러오는 방법은 크게 두 가지가 존재한다. 하나는 파일 앱에서 불러오는 것과 PICK 액션이 등록되어 있는 앱에서 불러오는 방법이 있다.

파일 앱에서 가져오기

먼저 파일 앱에서 불러오기 위해선 ACTION_GET_CONTENT 액션으로 요청해야 하며 가져올 타입이 필요하다.

Intent getAudioIntent = new Intent(ACTION_GET_CONTENT);
getAudioIntent.setType("audio/*"); // 타입에 따라 video/* , image/* 를 넣어주면 된다.
startActivityForResult(getAudioIntent, AUDIO_REQUEST);

startActivityForResult를 통해 startActivity된 앱에서 결과 값을 받아오도록 한다.

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == AUDIO_REQUEST){
        if(resultCode == RESULT_OK && data != null) {
            Uri audioUri = data.getData();
            // TODO 여기서 파일 처리 해주면 된다.
        }
    }
}

받아온 결과 값이 request가 맞는지 확인 후 결과가 OK면서 Intent가 null이 아닌 경우에 오디오 Uri를 가져와 처리하면 된다.

PICK 액션이 등록된 앱에서 가져오기

PICK 액션이 등록된 앱에서 가져오려면 먼저 ACTION_PICK으로 요청해야 하며 data와 type을 intent에 넣어줘야 한다. 오디오의 경우 아래처럼 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI로 선언해주면 되는데, 만약 다른 타입의 미디어를 불러올 경우 Audio 만 Video, Image 등으로 바꿔주면 된다.

Intent getAudioIntent = new Intent(ACTION_PICK);
getAudioIntent.setDataAndType(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, "audio/*");
startActivityForResult(getAudioIntent, AUDIO_REQUEST);

나머지는 위에서 한 것처럼 uri를 불러와서 처리 해주면 된다.

반응형