Dado un nombre de lista de reproducción de música de Android, ¿cómo se pueden encontrar las canciones en la lista de reproducción?

Los nombres de la lista de reproducción se pueden encontrar mediante una consulta en MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI y luego mira la columna MediaStore.Audio.PlaylistsColumns.NAME . También hay una columna de datos, MediaStore.Audio.PlaylistsColumns._DATA, pero está devolviendo null.

La lista de canciones ( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id ) no parece mostrar ninguna afiliación a la lista de reproducción.

Aquí hay un poco de mi progtwig:

Lo esencial es que necesitas la identificación para que la lista de reproducción capte las canciones.

Básicamente puedes tomar mi código y cambiar la instrucción where a .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; } 

esta es la manera de obtener toda la lista de reproducción desde el dispositivo

 public ArrayList getPlayList() { ArrayList arrayList=new ArrayList(); 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  " + i + " : " + playListName ); arrayList.add(playListName); } if(playListCursor != null) playListCursor.close(); return arrayList; } 

Aquí hay una forma efectiva de obtener pistas de una lista de reproducción. Básicamente, pasa el cursor por toda la consulta de la lista de reproducción, y cada vez que obtiene el id de un miembro (pista) y usando esa identificación de la pista, podemos obtener otros datos como ruta, artista, duración, álbum, 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()); } }