In this code I'm creating the playlist with Id and name but when I'm trying to display the songs of created songs it shows that there is no column named Media Store.audio.Playlists.Members.audio_Id
, MediaStore.Audio.Playlists.Members.Tracks
How do I extract the songs from a playlist?
public static Cursor query(context context, Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder,
int limit)
{
ContentResolver resolver = context.getContentResolver();
if (resolver == null) {
return null;
}
if (limit > 0) {
uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build();
}
return resolver.query(uri, projection, selection, selectionArgs, sortOrder);
}
public static Cursor query(Context context, Uri uri, String[] projection,
String selection, String[] selectionArgs, String sortOrder)
{
String[] projection1 = new String[]{MediaStore.Audio.Playlists.Members.AUDIO_ID};
return query(context, uri, projection1, selection, selectionArgs, sortOrder, 0);
}
private static int intFromCursor(Cursor c) {
int id = -1;
if (c != null) {
c.moveToFirst();
if (!c.isAfterLast()) {
id = c.getInt(0);
}
}
c.close();
return id;
}
public static int idForplaylist(Context context, String name) {
Cursor c = query(context, MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Playlists._ID },
MediaStore.Audio.Playlists.NAME + "=?",
new String[] { name },
MediaStore.Audio.Playlists.NAME);
return intFromCursor(c);
}
public static int idFortrack(Context context, String path) {
Cursor c = query(context, MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Audio.Media._ID },
MediaStore.Audio.Media.DATA + "=?",
new String[] { path },
MediaStore.Audio.Media.DATA);
return intFromCursor(c);
}
public static void writePlaylist(Context context, String playlistName, ArrayList<String> paths) {
Cursor cursor;
ContentResolver resolver = context.getContentResolver();
int playlistId = idForplaylist(context, playlistName);
String[] cols = new String[]{ MediaStore.Audio.Playlists._ID };
Uri uri;
if (playlistId == -1) {
ContentValues values = new ContentValues(1);
values.put(MediaStore.Audio.Playlists.NAME, playlistName);
uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values);
playlistId = idForplaylist(context, playlistName);
} else {
uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId);
}
Log.d(TAG, String.format("Writing playlist %s", uri));
// Add all the new tracks to the playlist.
int size = paths.size();
ContentValues values [] = new ContentValues[size];
for (int k = 0; k < size; ++k) {
values[k] = new ContentValues();
values[k].put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, k);
values[k].put(MediaStore.Audio.Playlists.Members.AUDIO_ID, idFortrack(context, paths.get(k)));
//values[k].put(MediaStore.Audio.Playlists.Members.TRACK,idFortrack(context,paths.get(k)));
}
resolver.bulkInsert(uri, values);
PlaylistName.setText("");
}
public void displayPlaylistSongs(long playlistId)
{
String[] projection = new String[] { MediaStore.Audio.Playlists.Members.TRACK,
MediaStore.Audio.Playlists.Members.ARTIST};
final String[] columns = new String[]{MediaStore.Audio.Playlists.Members.TRACK};
int[] to = new int[]{android.R.id.text1};
try {
Cursor c = getContentResolver().query(
MediaStore.Audio.Playlists.Members.getContentUri("external",
playlistId), projection, null, null, null);
pAdapter = new SimpleCursorAdapter(getBaseContext(),
android.R.layout.simple_list_item_1, c,columns, to);
list.setAdapter(pAdapter);