2013-03-04 62 views
1

我使用jid3lib for java。當我使用存儲在我的計算機上的文件處理這個庫時,它工作的很好,但是當我嘗試在模擬器的sdcard上讀取文件的mp3標籤時,我得到了Exeption。在android應用程序中閱讀mp3標籤

我使用下面的代碼:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_activity); 

    File musicPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); 

    File[] songs = musicPath.listFiles(); 

    for (int i=0; i < songs.length; i++){ 
     try { 
      MP3File song = new MP3File(new File(songs[i].getPath())); 
      Log.d("TEST", song.getID3v1Tag().getAlbum()); 

     } catch (TagException e) { 
      Log.d("TEST", "Tag Exception"); 
      e.printStackTrace(); 
     } catch (Exception e) { 
      Log.d("TEST", "Exception");    
      e.printStackTrace(); 
     } 

    } 
} 

我把2個mp3文件的SD卡,但我還是在登錄了異常。 這裏有什麼問題?

我有以下錯誤的logcat的:

java.io.FileNotFoundException: /mnt/sdcard/Music/song.mp3: open failed: EACCES (Permission denied) 

但是,當我期待在DDMS的文件管理器,我可以看到文件此路徑下,即使我用一個循環,爲了打印文件的名稱它顯示正確的名稱。

+0

你可以發佈Exception消息或StackTrace嗎? – Pratik 2013-03-04 11:50:06

+0

問題編輯@Pratik – galvan 2013-03-04 11:59:09

+0

嘗試使用MediaColumn(http://developer.android.com/reference/android/provider/MediaStore.MediaColumns.html) – Pratik 2013-03-04 13:28:29

回答

1

EACCES(拒絕)

添加READ_EXTERNAL_STORAGE許可清單文件。

而且,也許WRITE_EXTERNAL_STORAGE也。

+0

我添加它,但它仍然發生。 我也加了WRITE_EXTERNAL_STORAGE,問題就解決了。 爲什麼我必須添加此權限才能閱讀標籤? – galvan 2013-03-04 12:18:40

+0

@GalVanunu可能庫以R/W模式打開該文件。 – 2013-03-04 12:23:42