我尝试以这种方式删除文件:
getContentResolver().delete(uri, null, null)
当uri满足时,它适用于视频:// media / external / video / media / 1214但不适用于音频文件内容:// media / external / audio / media / 1212。
我需要删除从相机和录音机收到的文件,因为目前这些文件都在我的应用目录和SD卡上。
有人能帮助我吗?怎么了?
答案 0 :(得分:2)
Kotlin扩展名:
fun File.delete(context: Context): Boolean {
var selectionArgs = arrayOf(this.absolutePath)
val contentResolver = context.getContentResolver()
var where: String? = null
var filesUri: Uri? = null
if (android.os.Build.VERSION.SDK_INT >= 29) {
filesUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
where = MediaStore.Images.Media._ID + "=?"
selectionArgs = arrayOf(this.name)
} else {
where = MediaStore.MediaColumns.DATA + "=?"
filesUri = MediaStore.Files.getContentUri("external")
}
val int = contentResolver.delete(filesUri!!, where, selectionArgs)
return !this.exists()
}
像这样打电话:
val file = File(uri.path)
file.delete(applicationContext)
答案 1 :(得分:1)
你应该试试这个:
File file = new File(selectedFilePath);
boolean deleted = file.delete();
其中selectedFilePath是您要删除的文件的路径 - 例如:
/sdcard/YourCustomDirectory/ExampleFile.mp3
答案 2 :(得分:0)
下面的代码不仅删除图像文件,而且删除删除图像时留下的0Byte文件。我在Android 10中观察到此0Byte鬼文件行为。
val fileToDelete = File(photoUri.path)
if (fileToDelete.exists()) {
if (fileToDelete.delete()) {
if (fileToDelete.exists()) {
fileToDelete.canonicalFile.delete()
if (fileToDelete.exists()) {
getApplicationContext().deleteFile(fileToDelete.name)
}
}
Log.e("", "File Deleted " + savedPhotoUri.path)
} else {
Log.e("", "File not Deleted " + savedPhotoUri.path)
}
}