Android 使用 IN 子句查询 MediaStore

Android Query MediaStore using IN clause

我正在尝试提取存储在 "playlist" 中的项目的所有轨道,我有一组 android.provider.MediaStore.Audio.Media._ID 值,我正在尝试使用IN 子句,下面的例子不起作用...

        String[] projection = { android.provider.MediaStore.Audio.Media.TITLE, android.provider.MediaStore.Audio.Media._ID,
                android.provider.MediaStore.Audio.Media.ALBUM, android.provider.MediaStore.Audio.Media.ARTIST,
                android.provider.MediaStore.Audio.Media.DURATION, android.provider.MediaStore.Audio.Media.DISPLAY_NAME,
                android.provider.MediaStore.Audio.Media.ALBUM_ID, android.provider.MediaStore.Audio.Media.ARTIST_ID};

        String whereString = android.provider.MediaStore.Audio.Media._ID + " IN (?)";

        String[] selectionArgs = {"626,625"};

但是,如果我将 selecionArgs 更改为

        String[] selectionArgs = {"626"};

确实有效

IN 子句应该起作用还是我必须建立很多 OR 语句(我显然不想这样做)

万一其他人尝试这样做,IN 语句需要匹配数量的“?”,即您不能有一个包含值列表的参数,所以这可行...

    String[] projection = { android.provider.MediaStore.Audio.Media.TITLE, android.provider.MediaStore.Audio.Media._ID,
            android.provider.MediaStore.Audio.Media.ALBUM, android.provider.MediaStore.Audio.Media.ARTIST,
            android.provider.MediaStore.Audio.Media.DURATION, android.provider.MediaStore.Audio.Media.DISPLAY_NAME,
            android.provider.MediaStore.Audio.Media.ALBUM_ID, android.provider.MediaStore.Audio.Media.ARTIST_ID};

    String whereString = android.provider.MediaStore.Audio.Media._ID + " IN (?,?)";

    String[] selectionArgs = {"626","625"};