2011-07-15 43 views
0

我注意到了一些有關我的代碼行爲的奇怪現象,我希望有人能夠闡明一些看法。Uri with File:/// vs Content:// - 檢索音樂文件信息

 String temp = "file:///sdcard/music/05 Folsom Prison Blues.mp3"; 
     String temp2 = "content://media/external/audio/media/10"; 

     Uri uri = Uri.parse(temp); 

     Cursor musiccursor = null; 
     musiccursor = managedQuery(uri, null, null, null, null); 

     try { 
     if (musiccursor.moveToFirst()) { 
      String title; 
      int titleColumn = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
       title = musiccursor.getString(titleColumn); 
      item.setText(title); 
     } 

我注意到的問題是,與TEMP2一切都正常運行,我能得到這首歌的標題。但是隨着臨時音樂每次都是空的,所以我們拋出一個nullpointerexception。任何想法在這裏有什麼不同?我已經嘗試了temp的編碼版本(將空格轉換爲%20等)並且不起作用。我可以使用用temp2創建的uri來使用意圖播放歌曲,沒有任何問題......不知道我在這裏錯過了什麼。

在此先感謝!

+0

是啊爲什麼你使用內容提供者來檢索文件? –

回答

1

file://不是由內容提供商管理的方案(只有content://是),因此ContentResolver將無法​​對其執行任何操作。

+1

感謝您的回覆,我很感激。我結束file://和content://的原因是我允許用戶選擇他們希望用來選擇歌曲文件的程序(即音樂,天文等)。有什麼辦法可以將一個轉換成另一個,或者我應該只測試一個嗎? – chief

+0

您可以嘗試通過'MediaStore'內容提供者的東西來查看是否可以想出一種方法來獲取給定文件路徑的元數據,但我沒有嘗試過。 – CommonsWare

+0

很酷。再次感謝您治療我的失明:] – chief