我希望删除音乐文件夹中存储在手机上的音乐文件(没有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();
}
答案 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;
}