如何通过 Kotlin 使用 DocumentProvider 删除 android 外部存储中 /download(或任何其他文件夹)中的文件?

How to delete a file in /download (ora any other folder) in the android external storage with DocumentProvider through Kotlin?

我[仍然]对 android 开发以及 Java 和 Kotlin 很陌生(Java 中的解释也可以,但是,我正在研究它另外,Kotlin 是首选),我正在努力将一个简单的下载文件删除到 ExternalStorage 中。 当然,我启用了读写权限,即使这段代码 returns a "True",我仍然可以在我的下载文件夹中看到未修改的文件 这里的代码: ___UPDATE

// uri of my file in external storage ~/Download dir
var uri = Uri.parse (Environment.getExternalStorageDirectory().getPath() + "/Download/$myFilename$myExtensionVar")
// file object pointing at uri of file in external storage
val downloadedFile = File(uri.toString())

var deletedBool:Boolean = downloadedFile.delete()
                println("myTag - deleted Boolean: $deletedBool")

                if (deletedBool){
                    println("myTag - uri of file-to-be-deleted: $uri")
                    var secondStepToDelete:Int = context.getContentResolver().delete(uri, null, null)
                    println("myTag - second Step for deletion: $secondStepToDelete")
                }

我试图删除的文件是一个多媒体文件 (.mp3),我添加了第二个代码块(IF 语句中的那个),因为我发现它应该可以工作,与 "DocumentProvider" (我是新手,我仍然不知道如何正确调用它的方法..)但是,当然,它根本不起作用。 我想我确实需要存储在外部存储器中的文件的 ID(我猜是长类型),但是我还没有找到如何获取它

在此先感谢您的帮助!

要构建 File 对象,请使用 File 构造函数。要为某个根目录之外的位置构建一个 File 对象,请使用双参数 File(File, String) 构造函数:

val downloadedFile = File(Environment.getExternalStorageDirectory(), "Download/$myFilename$myExtensionVar")

除非您从 DownloadManager 或其他什么地方得到 Uri,否则没有 Uri 需要 delete()

我写了更多关于外部存储以及如何使用它的文章here

在科特林中

file.deleteRecursively()