将音乐文件删除,重新运行后,查询List还显示删除的音乐文件
List<Music> list=new ArrayList<>();
//查询媒体数据库
Cursor cursor=getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,
null,null ,MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
//遍历数据库
if (cursor.moveToFirst()){
while (!cursor.isAfterLast()) {
// 歌曲编号
int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
// 歌曲id
int trackId = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
// 歌曲标题
String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
// 歌曲的专辑名:MediaStore.Audio.Media.ALBUM
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
// 歌曲的歌手名: MediaStore.Audio.Media.ARTIST
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
// 歌曲文件的路径 :MediaStore.Audio.Media.DATA
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
// 歌曲的总播放时长:MediaStore.Audio.Media.DURATION
int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
// 歌曲文件的大小 :MediaStore.Audio.Media.SIZE
Long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
// 歌曲文件显示名字
String disName = cursor.getString(cursor.getColumnIndexOrThrow(
MediaStore.Audio.Media.DISPLAY_NAME));
// 是否为音乐
int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
cursor.moveToNext();
if (isMusic != 0) { // 只把音乐添加到集合当中
Music music=new Music();
music.setTitle(title);
music.setArtist(artist);
music.setUrl(url);
music.setDuration(duration);
music.setSize(size);
music.setDisName(disName);
list.add(music);
}
}
Log.d("url","Service_list="+list);
}
cursor.close();
你通过媒体库访问的,媒体库存在缓存,要么手动刷新媒体库要么对文件是否存在进行判断。不过同样添加一个新的文件时可能存在搜索不到的情况,所以建议是刷新媒体库。