我正在创建一个播放用户音乐的 android 应用程序。我已经让它在模拟器上正常工作,但是当我将它安装在手机上时它不起作用,它在这一行崩溃:
int songIndex = new Random().nextInt(songsList.size());
因为 songList.size() 返回 0,因为在手机上运行时似乎找不到音乐。我在手机里放了一张 Micro SD 卡,并在上面加载了音乐(在根文件夹中)。我正在使用以下内容来获取路径:
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath();
在模拟器和手机上,从这里返回的字符串是 /mnt/sdcard。但它只适用于模拟器。我还在清单文件中包含以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
有任何想法吗?
编辑:
我没有包括这个,因为我认为它不会有太大帮助,但这是我用来实际获取歌曲列表的代码:
public ArrayList<HashMap<String, String>> getPlaylist(){
File home = new File(MEDIA_PATH);
if(home.listFiles(new FileExtensionFilter()).length > 0) {
for(File file : home.listFiles(new FileExtensionFilter())){
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", file.getName().substring(0, (file.getName().length() -4)));
song.put("songPath", file.getPath());
//Add song to song list
songsList.add(song);
}
}
return songsList;
}