2017-04-25 1 views
0

ACTION_GET_CONTENT 인 텐트를 사용하여 사용자가 라이브러리에서 노래를 선택하게 한 다음 onActivityResult() 메서드로 URI로 반환됩니다.ACTION_GET_CONTENT 의도에서 가져온 URI에서 파일 이름을 가져 오는 방법은 무엇입니까?

나는 노래의 이름을 알아야합니다.

Uri song; //got from onActivityResult 

String songName = song.getLastPathSegment(); 

과 함께 :

내가 함께 시도 songName 문자열은 다음과 같습니다 두 경우 모두

Uri song; //got from onActivityResult 

File file = new File(song.getPath()); 
String songName = file.getName(); 

: 내가 좋아하는 뭔가를 기대하고 있습니다 동안

// audio:9980 

:

// Walk on the wild side.mp3 

내가 뭘 잘못하고 있니?

답변

1

파일의 이름을 알아야합니다.

이것은 파일이 아닙니다. Uri입니다. https://stackoverflow.com/questions/43615264/how-to-get-the-file-name-from-an-uri-got-from-action-get-content-intent은 URI입니다. how-to-get-the-file-name-from-an-uri-got-from-action-get-content-intent은 파일 이름이 아닙니다.

내가 뭘 잘못하고 있니?

ACTION_GET_CONTENT은 파일을 제공한다고 가정합니다.

OpenableColumnsContentResolver ~ query()을 사용하고 DISPLAY_NAME을 요청할 수 있습니다. 나는 그것을 this sample app에서 증명합니다. 그러나 표시 이름을 얻고 있다는 것을 이해하고 사용자가 실제로 "표시 이름"이 무엇인지 ACTION_GET_CONTENT을 처리하도록 선택한 응용 프로그램에 달려 있습니다. 일 수 있지만 파일 이름 일 필요는 없습니다.

+0

나는 실제로 질문에서 잘못 설명했다. 나는 지금 그것을 편집 할 것이다. 나는 파일을 가지고 일하는 것이 아니라 우리와의 차이점을 안다. 이름을 알 수있는 곳에서 코드 조각을 게시 할 수 있습니까? – Daniele

+0

@Daniele : [샘플 응용 프로그램의 다음 줄 참조] (https://github.com/commonsguy/cw-omnibus/blob/v8.5/Documents/Consumer/app/src/main/) java/com/commonsware/android/documents/consumer/ConsumerFragment.java # L91-L142) 여기서'CursorLoader'를 사용하여 OpenableColumns를 검색합니다. – CommonsWare

관련 문제