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

음악 uri 질문입니다~~~!!!!

0 추천
Intent M_intent = new Intent();
M_intent.setType("audio/mp3");
M_intent.setAction(Intent.ACTION_GET_CONTENT);
   startActivityForResult(Intent.createChooser(
    M_intent, "Open Audio (mp3) file"), RQS_OPEN_AUDIO_MP3);
 
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 if (resultCode == RESULT_OK) {
  if (requestCode == RQS_OPEN_AUDIO_MP3) {
   Uri audioFileUri = data.getData();
   srcPath = audioFileUri.getPath();
   
   music.setText(srcPath );
 
구글링하면서 찾아본 소스인데 
 
경로끝에 파일이름이 3201 뭐 이런식으로 숫자로 뜨더군요 ㅠㅠ
파일명이 제대로 뜨지 않는 이유가 뭔가요 ???

 

익명사용자 님이 2015년 3월 2일 질문

1개의 답변

0 추천
 
채택된 답변

경로끝에 파일이름이 3201 뭐 이런식으로 숫자로 뜨더군요 ㅠㅠ

=> /external/audio/media/31

    이렇게 뜨는것은 미디어디비에 있는 해당 음원의 아이디입니다.

    파일명을 넘겨주고 싶으면 이값을 이용하여 실제 파일명을 가져오심됩니다.   

	private String uriToRealPath(Uri uri) {
	    Cursor cursor = managedQuery(uri,
		new String[] {MediaStore.Images.Media.DATA},
		null,
		null,
		null);
		cursor.moveToFirst();
	    String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
	    return path;
	}

그러면 아래와 같이 실제 파일경로를 가져올수 있지요

/storage/emulated/0/Samsung/Music/Over_the_horizon.mp3

nicehee (73,100 포인트) 님이 2015년 3월 2일 답변
답변 감사합니다 ^^
근데 Images 인데 음악에도 적용되는건가요 ?
Uri audioFileUri = data.getData();

music.setText(uriToRealPath(audioFileUri));

이렇게 했는데 오류가 나는데 퍼미션 넣어야 하는건가요 ?
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
이거 넣어줘야합니다.
...