正如我在 MediaMetadataRetriever API 中看到的那样,公共标签有常量。在我的应用程序中,我想阅读所有 mp3 标签。为了做到这一点,我使用 jid3lib。当我尝试在没有与 android (我的计算机上的 MP3 文件)任何连接的情况下读取标签时,我成功了,但是当我尝试在模拟器上读取 MP3 文件时,我的应用程序崩溃了。
我将一些音乐文件推送到模拟器中,并且成功读取了这些文件名,但是当应用程序试图获取标签时它崩溃了。
我想知道我是否必须在清单中声明任何 android 权限?或者在本地计算机和android中读取文件之间可能存在差异?因为我使用相同的逻辑来读取计算机上的 MP3 文件并且它可以工作。
编辑:下面评论中的代码以获得更好的可读性
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
File[] songs = path.listFiles();
for (int i=0; i<songs.length; i++){
try {
MusicFile song = new MusicFile(songs[i]);
Log.d("VanVan", song.getArtist());
} catch (TagException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}