1234567
1234567

Reputation: 2485

select multiple song id from MediaStore.Audio.Media

I have created a getContentResolver().query using the follwing

 uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
            String projection[] = { android.provider.MediaStore.Audio.Media.DATA,
                    android.provider.MediaStore.Audio.Media.TITLE,
                    android.provider.MediaStore.Audio.Media.ARTIST,
                    android.provider.MediaStore.Audio.Media.ALBUM,
                    android.provider.MediaStore.Audio.Media.COMPOSER,
                    android.provider.MediaStore.Audio.Media.DURATION,
                    MediaStore.Audio.Media._ID,
                    android.provider.MediaStore.Audio.Media.ALBUM_ID };
                    String selection1 = MediaStore.Audio.Media._ID + "=?" ;
                    String[] selectionArgs = new String[] {"" + 19};
                    cursor = this.getContentResolver().query(uri, projection,
                    selection1, selectionArgs, null);
                    songs = new ArrayList<String>();
                    while (cursor.moveToNext()) { 
                    songs.add(cursor.getString(1)); 

This works perfectly fine for selecting single song , however when I try to select multiple songs using

String selection1 = MediaStore.Audio.Media._ID + "IN(?,?)";
String[] selectionArgs = new String[] {"" + 12,"" + 19};

This query fails .

Is there a proper way to select multiple songs , what is wrong with the above query. please explain the changes needed to be made.

Upvotes: 0

Views: 667

Answers (2)

The Original Android
The Original Android

Reputation: 6215

Another good try is using raw query instead, documentation @ SQL rawQuery. With a raw query, you can use the IN operator, and I think it's a good idea for simplifying queries. I should use it next time.

Thanks for this question!

Upvotes: 0

The Original Android
The Original Android

Reputation: 6215

I don't see anything wrong with your query using the IN operator. I suspect the query with IN has quirks and limitations. I did not use it however. Try just using the OR operator instead. Example:

String selection1 = MediaStore.Audio.Media._ID + "=12" + " OR " + MediaStore.Audio.Media._ID + "=19";

And of course not use selectionArgs as the parameter.

Upvotes: 1

Related Questions