Given the name of the playlist for Android, how can I find songs in the playlist?

Playlist names can be found at MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI and then look at the MediaStore.Audio.PlaylistsColumns.NAME column. There is also a data column, MediaStore.Audio.PlaylistsColumns._DATA, but it returns null.

The list of songs ( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id ) does not seem to show membership in the playlist.

+7
android media playlists
source share
3 answers

Here is a bit from my program:

The bottom line is that you need an identifier for a playlist to capture songs.

Basically, you can take my code and change the where statement to .NAME + "= '" + name + "'",

 private Cursor getPlaylists(String playlistId){ Cursor cursor = null; String[] projection1 = { MediaStore.Audio.Playlists._ID, MediaStore.Audio.Playlists.NAME }; cursor = this.managedQuery( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, projection1, MediaStore.Audio.Playlists._ID+ " = "+playlistId+"", null, null); startManagingCursor(cursor); cursor.moveToFirst(); playlist_id = cursor.getString(0); playlist_id2 = cursor.getLong(0); if(playlist_id2 > 0){ String[] projection = { MediaStore.Audio.Playlists.Members.AUDIO_ID, MediaStore.Audio.Playlists.Members.ARTIST, MediaStore.Audio.Playlists.Members.TITLE, MediaStore.Audio.Playlists.Members._ID }; cursor = null; cursor = this.managedQuery( MediaStore.Audio.Playlists.Members.getContentUri("external",playlist_id2 ), projection, MediaStore.Audio.Media.IS_MUSIC +" != 0 ", null, null); } cManager(cursor,2,1); return cursor; } 
+6
source share

this is the way to get the whole playlist from the device

 public ArrayList<String> getPlayList() { ArrayList<String> arrayList=new ArrayList<String>(); String[] proj = {"*"}; Uri tempPlaylistURI = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; // In the next line 'this' points to current Activity. // If you want to use the same code in other java file then activity, // then use an instance of any activity in place of 'this'. Cursor playListCursor= activity.managedQuery(tempPlaylistURI, proj, null,null,null); if(playListCursor == null){ System.out.println("Not having any Playlist on phone --------------"); return arrayList;//don't have list on phone } System.gc(); String playListName = null; System.out.println(">>>>>>> CREATING AND DISPLAYING LIST OF ALL CREATED PLAYLIST <<<<<<"); for(int i = 0; i <playListCursor.getCount() ; i++) { playListCursor.moveToPosition(i); playListName = playListCursor.getString(playListCursor.getColumnIndex("name")); System.out.println("> " + i + " : " + playListName ); arrayList.add(playListName); } if(playListCursor != null) playListCursor.close(); return arrayList; } 
0
source share

Here is a working way to get tracks from a playlist. Basically, it moves the cursor throughout the request of the playlist, and every time it gets the identifier of the participant (track) and uses this identifier of the track, we can get other data, such as track, artist, duration, album, etc.

  ContentResolver contentResolver = getContentResolver(); Uri playListUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistID); //playlistID is the _ID of the given playlist MediaMetadataRetriever mr = new MediaMetadataRetriever(); Cursor cursor = contentResolver.query(playListUri, null, null, null, null); if(cursor != null) { if(cursor.moveToNext()) { do { String track_id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID)); Uri mediaContentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String[] trackProjection = new String[]{MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.DATA}; String selection = MediaStore.Audio.Media._ID + "=?"; String[] selectionArgs = new String[]{"" + track_id}; Cursor mediaCursor = contentResolver.query(mediaContentUri, trackProjection, selection, selectionArgs, null); if (mediaCursor != null) { if (mediaCursor.getCount() >= 0) { mediaCursor.moveToPosition(0); String song_title = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); String song_artist = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); String song_album = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); String song_path = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.DATA)); } } } while (cursor.moveToNext()); } } 
0
source share

All Articles