入力されたキーワードに応じて MediaStore を照会するカーソルがあります。
Cursor cursor = getContentResolver().query(
uri,
projection,
where,
params,
MediaStore.Audio.Media.TITLE);
ID、タイトル、アーティストなどに問題なくアクセスできますが、.DATA 行を照会するたびに、カーソルからデータにアクセスする前に、カーソルが正しく初期化されていることを確認する必要があるというエラーが表示されます。
if(cursor.moveToFirst()){
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
/** ERROR IN THIS LINE **/ String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
test.setText(title +" " + artist + " " + data);
cursor.close();
}
ログキャット:
08-14 14:08:43.795: E/AndroidRuntime(4428): Caused by: java.lang.IllegalStateException: Couldn't read row 1, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
08-14 14:08:43.795: E/AndroidRuntime(4428): at android.database.CursorWindow.nativeGetString(Native Method)
08-14 14:08:43.795: E/AndroidRuntime(4428): at android.database.CursorWindow.getString(CursorWindow.java:434)
08-14 14:08:43.795: E/AndroidRuntime(4428): at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)
08-14 14:08:43.795: E/AndroidRuntime(4428): at android.database.CursorWrapper.getString(CursorWrapper.java:114)
それは私の活動のその線を指しています。
文字列データを削除すると、タイトル、アルバム名、アーティスト名、曲 ID などを完全に取得できます。