私は音楽プレーヤーを作っています & ここにシナリオがあります:
現在のプレイリストにあり、再生しようとしている曲をディレクトリから削除しました (つまり、その曲は実際には電話に存在しません)。
しかし、プレーヤーが曲を再生しようとすると、エラーがスローされ、それをキャッチして次の曲を再生します。シンプルで機能しています。
ただし、問題は次のとおりです。
電話で削除した曲を以前の場所に再度アップロードします。
しかし、 を使用してアクセスしようとするAndroid database curson using MediaStore.Audio
と、曲が存在しないと見なされ、同じエラーがスローされます。
以下のコードは投げていますandroid.database.CursorIndexOutOfBoundsException
何をすべきか提案してください。
アプリケーションが電話メモリの更新された状態を取得して曲を取得できるようにするために、いくつかのフラグを更新する必要がありますか?
String quesryString = MediaStore.Audio.Media.IS_MUSIC + "!=" + 0 + " AND "
+ MediaStore.Audio.Media.DATA + " = \"" + trackData + "\"";
// trackData is the name of the mp3 file & is coming right
String[] projection = { MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION };
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection,
quesryString, null, null);
cursor.moveToFirst();
String songTitle = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));