【发布时间】:2020-07-20 11:34:26
【问题描述】:
我是 android 应用程序开发的新手,我正在构建一个音乐播放器应用程序。我正在使用 Content Resolver 查询歌曲。我想实现一个从设备中永久删除歌曲的功能。我正在使用以下代码,但无法实现。
Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,song.getId());
File file = new File(uri.getPath());
if(file.delete()){
Log.d("MUSIC SERVICE DELETE","SUCCESS");
}
else {
Log.d("MUSIC SERVICE DELETE","FAILED");
}
【问题讨论】:
-
您的 uri 不能使用 File 类。而且您没有告诉您使用的是 Android Q 还是更低版本。看看这里开始:stackoverflow.com/questions/20719198/…
-
我使用的是 android R 或更低版本。在那篇文章中使用了 MediaStore.MediaColumns.DATA 已被弃用,并且使用 ContentResolver.delete(uri,null,null) 不会删除文件。
-
如果您有 uri,那么您不需要 .DATA 列进行删除。在 Q+ 上有 .RELATIVE_PATH。但是您不需要删除 uri。
-
在 Q+ 上从 MediaStore 中删除就是您所要做的。在 Q 以下,您也必须删除文件本身(我认为确实使用 .DATA)。
-
我要删除文件系统中的物理文件
标签: android android-file