2012-12-07 87 views
0

我有SD卡上的歌曲,我試圖讓這首歌的標題:如何獲取歌曲標題? Android的

File f = new File(filename); 

String[] projection = { MediaStore.Audio.Media._ID, 
         MediaStore.Audio.Media.ARTIST, 
         MediaStore.Audio.Media.TITLE, 
         MediaStore.Audio.Media.DATA, 
         MediaStore.Audio.Media.DISPLAY_NAME, 
         MediaStore.Audio.Media.DURATION}; 

Cursor musiccursor = managedQuery(Uri.fromFile(f), 
         projection, null, null, null); 
musicTV.setText(musiccursor.getString(3)); 

但在最後一行我已經得到了NullPointerException。 感謝您的任何建議。

+2

閱讀光標文檔,以 – njzk2

+0

開始,其中'musiccursor.getColumnIndex(MediaStore.Audio.Media.TITLE)'?你已經假定索引應該有值3.這是不好的假設和事件,如果它是好的假設然後在java索引從0開始而不是從1開始。 –

+0

個人而言,我在我的投影中使用了null(所以我得到所有列)直到我找出如何去做。然後我減少了我的查詢內容。 –

回答

0

如果您使用的是遊標,當您獲取某些內容時必須將遊標移至第一個元素,因爲光標指向第一個元素之前。 嘗試使用:

Cursor musiccursor = managedQuery(Uri.fromFile(f), projection, null, null, null); 
cursor.moveToFirst(); 
musicTV.setText(musiccursor.getString(3)); 
0

你見過this這讓你有90%,那麼this將讓你的方式休息。

  1. 查詢設備
  2. 初始化光標
  3. 特拉弗斯光標

困難的部分是瞭解列的抽象本質。只要記住它是一個數據庫表,並且可以作爲電子表格可視化。不要忘記捕獲的聲明!