Javaにはjid3libを使用しています。コンピューターに保存されているファイルでこのライブラリを使用しているときはうまく機能しますが、エミュレーターの SD カードにあるファイルの mp3 タグを読み取ろうとすると、Exeption が発生します。
次のコードを使用します。
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 のファイル エクスプローラーを見ていると、このパスの下にファイルが表示され、ループを使用してファイルの名前を出力しても、正しい名前が表示されます。