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

时间:2019-02-23 12:18:02

标签: android kotlin android-external-storage

我仍然是Android开发以及Java和Kotlin的新手(也可以用Java进行解释,但是,我也在研究,更喜欢Kotlin),并且我正在努力删除简单下载的文件到ExternalStorage。 当然,我启用了读写权限,即使该代码返回“ 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(我想是长类型),但是我还没有找到如何获取它的

预先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

除非您从Uri那里得到DownloadManager,否则不需要Uri。{p1

我在外部存储以及如何使用它方面写了更多here

答案 1 :(得分:1)

在科特林

file.deleteRecursively()