Java 有没有办法从物理手机(外部和内部存储器)读取mp3文件。我试过了,但我不明白
我没有从getPlayList中得到任何mp3文件Java 有没有办法从物理手机(外部和内部存储器)读取mp3文件。我试过了,但我不明白,java,android,Java,Android,我没有从getPlayList中得到任何mp3文件 ArrayList<HashMap<String,String>> songList = getPlayList(Environment.getExternalStorageDirectory().getAbsolutePath()); String [] fileNameList = new String[songList.size()]; String [] artistList =
ArrayList<HashMap<String,String>> songList = getPlayList(Environment.getExternalStorageDirectory().getAbsolutePath());
String [] fileNameList = new String[songList.size()];
String [] artistList = new String[songList.size()];
enter code here
if(songList!=null){
for(int i = 0 ; i < songList.size() ; i++){
fileNameList[i] = songList.get(i).get("file_song");
artistList[i] = songList.get(i).get("file_artist");
//here you will get list of file name and file path that present in your device
Log.e("file det ails "," name ="+fileNameList[i] +" path = "+artistList[i]);
}
}
RecyclerView playListRecyclerView = findViewById(R.id.playListRecyclerView);
playListRecyclerView.setLayoutManager(new LinearLayoutManager(this));
PlayListAdapter playListAdapter = new PlayListAdapter(fileNameList, artistList);
playListRecyclerView.setAdapter(playListAdapter);
}
ArrayList<HashMap<String,String>> getPlayList(String rootPath) {
ArrayList<HashMap<String,String>> fileList = new ArrayList<>();
try {
File rootFolder = new File(rootPath);
File[] files = rootFolder.listFiles(); //here you will get NPE if directory doesn't contains any file,handle it like this.
for (File file : files) {
if (file.isDirectory()) {
if (getPlayList(file.getAbsolutePath()) != null) {
fileList.addAll(getPlayList(file.getAbsolutePath()));
} else {
break;
}
} else if (file.getName().endsWith(".mp3")) {
HashMap<String, String> song = new HashMap<>();
song.put("file_song", file.getName());
song.put("file_artist", file.getAbsolutePath());
fileList.add(song);
}
}
return fileList;
} catch (Exception e) {
return null;
}
}
ArrayList songList=getPlayList(Environment.getExternalStorageDirectory().getAbsolutePath());
String[]fileNameList=新字符串[songList.size()];
String[]artistList=新字符串[songList.size()];
在这里输入代码
如果(歌曲列表!=null){
对于(int i=0;i
我得到了一个错误
原因:java.lang.NullPointerException:尝试调用虚拟机
空对象引用上的方法“int java.util.ArrayList.size()”
getPlayList()
可以返回null。null.size()
将抛出你的异常。@blackapps我是android新手,我认为getPlayList()返回null,因为它不会返回任何mp3文件。所以我想知道我的代码从内部存储器中取回mp3文件是否有误。你的代码确实有误,因为你没有检查null,只是继续,就好像你有一个有效的数组列表一样。首先修复它。//这里您将得到NPE
否。只有在下一个语句中。