我使用以下
创建了getContentResolver().query
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));
这适用于选择单首歌曲,但是当我尝试使用
选择多首歌曲时String selection1 = MediaStore.Audio.Media._ID + "IN(?,?)";
String[] selectionArgs = new String[] {"" + 12,"" + 19};
此查询失败。
是否有正确的方法来选择多首歌曲,上述查询有什么问题。 请解释需要进行的更改。
答案 0 :(得分:0)
我没有看到使用 IN 运算符的查询有任何问题。我怀疑IN的查询有怪癖和局限性。但是我没有使用它。请尝试使用 OR 运算符。 例如:
String selection1 = MediaStore.Audio.Media._ID + "=12" + " OR " + MediaStore.Audio.Media._ID + "=19";
当然不要使用selectionArgs
作为参数。
答案 1 :(得分:0)
另一个不错的尝试是使用原始查询代替文档@ SQL rawQuery。使用原始查询,您可以使用 IN 运算符,我认为这对于简化查询是一个好主意。我下次应该用它。
感谢您提出这个问题!