private void initPlayList() { List<SongInfo> songs = new ArrayList<>(); mSongMap.clear(); mSongUrls.clear(); ContentResolver musicResolver = mActivity.getContentResolver(); Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null); if (musicCursor != null && musicCursor.moveToFirst()) { int albumColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.ALBUM); int artistColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.ARTIST); int displayNameColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DISPLAY_NAME); int durationColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DURATION); int titleColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE); int idColumn = musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID); do { String album = musicCursor.getString(albumColumn); String artist = musicCursor.getString(artistColumn); String displayName = musicCursor.getString(displayNameColumn); long duration = musicCursor.getLong(durationColumn); String title = musicCursor.getString(titleColumn); long id = musicCursor.getLong(idColumn); SongInfo songInfo = new SongInfo(); songInfo.setAlbum(album); songInfo.setArtist(artist); songInfo.setDisplayName(displayName); songInfo.setDuration((int) duration); songInfo.setTitle(title); songInfo.setUrl(id + ""); songs.add(songInfo); } while (musicCursor.moveToNext()); } Collections.sort(songs, mSongComparator); for (SongInfo song : songs) { mSongMap.put(song.getUrl(), song); mSongUrls.add(song.getUrl()); } }