1

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);
Chilledrat
  • 2,593
  • 3
  • 28
  • 38
user1495322
  • 11
  • 1
  • 3
  • see this post http://stackoverflow.com/questions/2694909/given-an-android-music-playlist-name-how-can-one-find-the-songs-in-the-playlist – ρяσѕρєя K Jul 02 '12 at 10:51
  • I've edited your question but noticed the code is truncated during the try block of your displayPlaylistSongs() method. – Chilledrat Jul 03 '12 at 12:36
  • what if i send u the project....u can easily check that and answer me..please tell me ur email address – user1495322 Jul 04 '12 at 10:38

0 Answers0