我尝试以以下方式删除文件:
getContentResolver().delete(uri, null, null)
当uri为content://media/external/video/media/1214时,它适用于视频,但对于音频文件content://media/external/audio/media/1212则不适用。
我需要使用它来删除从相机和录音机接收到的文件,因为目前这些文件在我的应用程序目录和SD卡上。
有人可以帮帮我吗?出了什么问题?
我尝试以以下方式删除文件:
getContentResolver().delete(uri, null, null)
当uri为content://media/external/video/media/1214时,它适用于视频,但对于音频文件content://media/external/audio/media/1212则不适用。
我需要使用它来删除从相机和录音机接收到的文件,因为目前这些文件在我的应用程序目录和SD卡上。
有人可以帮帮我吗?出了什么问题?
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)
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)
}
}
File(uri.path).delete()
。我不能使用File(uri)
,因为File期望一个Java URI,而我的uri是Android Uri。 - Damn Vegetables