0

Android MediaStore にクエリを実行できますが、「where」ステートメントをセットアップできません。だから私はそれを手に入れることをあきらめて、それをハックしようとしましたが、私のハックもうまくいきません。

私のハックは、カーソルの各行を移動し、関心のある列の文字列値が検索キーワードと同等かどうかを確認することです...私のコードは以下の通りです。私がやろうとしているのは、アルバム (またはアーティスト、プレイリスト) 内のすべての曲を見つけることです。

「where」のクエリの設定、または文字列比較が機能しない理由を教えていただければ幸いです...

private void loadList() {

        String selection = ((HashMap<String, String>) selectedAlbumData.get(0))
                .get("Album").toString();

        String[] proj = { MediaStore.Audio.Media._ID,
                MediaStore.Audio.Media.DISPLAY_NAME,
                MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.ARTIST,
                MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.DURATION };

        // managed query doesn't need startManagingCursor called on the
        Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                proj, null, null, null);

        if (c.getCount() < 1) {
            Log.d("AFA", "Cursor query is empty.. :( ...");
        } else {

            // do stuff with our content...
            while (c.moveToNext()) {

                HashMap<String, String> temp = new HashMap<String, String>();

                if (c.getString(c.getColumnIndex(MediaStore.Audio.Media.ALBUM)) == selection) {

                            //do stuff with this data

                }
                Log.d("SongChoosing", "C str is: " + c.getString(c.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
            }

            //debug stuff
            c.moveToPosition(5);
            Log.d("SongChoosing", "Selection is: " + selection);
            Log.d("SongChoosing", "C str is: " + c.getString(c.getColumnIndex(MediaStore.Audio.Media.ALBUM)));
        }
    }

アルバム列で探している文字列値は有効な文字列であり、null または空ではありません。log cat に曲のすべての行を印刷しようとしましたが、文字列は肉眼と同等に見えますが、if ステートメントはうまくいかない...

私を助けることができる人に感謝します。

4

1 に答える 1

1

文字列では == の代わりに equals または equalsIgnoreCase を使用する必要があります。

これを試して

 if (c.getString(c.getColumnIndex(MediaStore.Audio.Media.ALBUM)).equalsIgnoreCase(selection)) {

                        //do stuff with this data

            }
于 2012-05-26T21:08:04.467 に答える