2015-10-09 2 views
0

Я создал getContentResolver().query используя follwingвыбрать несколько идентификатор песни из MediaStore.Audio.Media

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}; 

Этот запрос не работает.

Есть ли способ выбрать несколько композиций, что не так с вышеуказанным запросом. , пожалуйста, объясните изменения, которые необходимо внести.

+1

добавить "" (пробел) перед "IN" – pskink

+0

Большое спасибо. @pskink – 1234567

+0

Как мы можем выбрать несколько песен из определенного идентификатора, я выбрал все песни из идентификатора альбома, используя selectargs, как android.provider.MediaStore.Audio.Albums._ID, теперь как и выше, как мы можем использовать как несколько идентификаторов песни и альбом id в selectargs syndaneoulsy – 1234567

ответ

0

Я не вижу в этом ничего неправильного с помощью оператора IN. Я подозреваю, что запрос с IN имеет причуды и ограничения. Однако я не использовал его. Попробуйте использовать только оператор ИЛИ. Пример:

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

И, конечно, не использовать selectionArgs в качестве параметра.

0

Другая хорошая попытка использовать необработанный запрос вместо этого, документация @SQL rawQuery. С необработанным запросом вы можете использовать оператор IN, и я думаю, что это хорошая идея для упрощения запросов. Я должен использовать его в следующий раз.

Спасибо за этот вопрос!

+0

хорошо работает с решением pskink – 1234567