2017-04-25 171 views
0

我使用了ACTION_GET_CONTENT Intent來讓用戶從他的庫中選擇一首歌曲,然後將它作爲URI返回到onActivityResult()方法中。如何從ACTION_GET_CONTENT獲取的URI獲取文件名意圖?

我需要獲取歌曲的名稱。

我試着用:

Uri song; //got from onActivityResult 

String songName = song.getLastPathSegment(); 

,並用:

Uri song; //got from onActivityResult 

File file = new File(song.getPath()); 
String songName = file.getName(); 
在兩種情況下 songName字符串看起來像這樣

// 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給你一個文件。

歡迎您使用ContentResolverquery()作爲OpenableColumns並要求提供DISPLAY_NAME。我證明在this sample app。但是,請理解您正在獲取顯示名稱,並且取決於用戶選擇處理ACTION_GET_CONTENT「顯示名稱」的應用程序。它可能是一個文件名,但它不一定是。

+0

我其實在問題中解釋錯了。我現在將編輯它。我知道我沒有使用文件,但使用Uri,我知道它們之間的區別。你可以在你得到這個名字的地方張貼這段代碼嗎?感謝您的快速回答 – 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