无法在Android中删除文件

时间:2014-10-22 22:42:02

标签: android android-file android-permissions

我希望删除音乐文件夹中存储在手机上的音乐文件(没有SD卡)。我有文件路径,File.exists()表示正确。接下来,File.delete()也表示正确,但文件保持不变。但!删除"删除"我不能再播放此文件,编辑名称也无法复制它。但我可以手动删除它。

我已设置android.permission.WRITE_EXTERNAL_STORAGE。 OS 4.4.4 GPE

我的错误在哪里?任何建议,谢谢。

    File file = new File(Path);
    if (file.exists()){
        file.setWritable(true, false);
        return file.delete();
    }

2 个答案:

答案 0 :(得分:1)

Windows不直接查看外部存储。它正在查看Android设备上的媒体传输协议(MTP)服务器提供的数据。反过来,它正在使用MediaStore索引,而不是实际的文件系统。

如果您对外部存储进行了任何更改,例如删除文件,则需要更新MediaStore。关闭袖口,我不记得究竟如何为已删除的文件执行此操作,但我会考虑尝试使用MediaScannerConnection and scanFile()来扫描包含已删除文件的目录。

答案 1 :(得分:0)

所以,我的最终解决方案似乎有效:

public Boolean deleteTrack(String key){
    MusicTrack track = getAlbum(0).getTrackByKey(key);
    if (track == null) return false;

    File file = new File(track.getData().Path);
    if (file.exists()){
        file.setWritable(true, false);
        String where = MediaStore.Audio.Media.DATA +"=\""+ track.getData().Path +"\"";
        if (context.getContentResolver().delete(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, where, null) == 1){
            if (file.exists()){
                Boolean d = file.delete();
                context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
                return d;
            }
            return true;
        }
    }
    return false;
}