android遍历出所有的音乐文件,将音乐文件删除,重新运行后,查询List还显示删除的音乐文件

偷菜的小喵
  • 71

将音乐文件删除,重新运行后,查询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();
回复
阅读 2.6k
3 个回答

你通过媒体库访问的,媒体库存在缓存,要么手动刷新媒体库要么对文件是否存在进行判断。不过同样添加一个新的文件时可能存在搜索不到的情况,所以建议是刷新媒体库。

你上面的代码无法查看你是什么删除的,是通过代码删除还是手动删除?重新运行

宣传栏