gpt4 book ai didi

android - 如果文件存在,为什么 ACTION_CREATE_DOCUMENT Intent 不能正确重命名文件?

转载 作者:行者123 更新时间:2023-12-04 14:07:20 28 4
gpt4 key购买 nike

你好,

我在我的应用程序中使用 ACTION_CREATE_DOCUMENT Intent ,让用户选择下载文件的路径。当文件名唯一时,它工作正常。

根据文档,如果文件名存在,系统不会覆盖原文件,而是在文件末尾附加编号。

我尝试了原始的android示例,首先,当没有其他同名文件时,文件创建完美,我可以打开,但是当我想以相同的名称保存文件时,想到系统附加号码,不是在扩展名之前,而是在扩展名之后,如下所示:fileName.jpg(1),之后我无法打开,直到我删除这个附加的字符串。

我只试用了搭载 Android 10 的三星 Galaxy S20,这是一个特定问题,还是我做错了什么?

也许这将是一个很好的解决方案,如果我可以在保存之前检查文件名,但文档树会创建文件。

我试过这段代码,来自 documentation :

const val CREATE_FILE = 1

private fun createFile() {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, "invoice.pdf")

}
startActivityForResult(intent, CREATE_FILE)
}

感谢您的帮助。

最佳答案

如果文件名后面没有扩展名(由MIME类型给定),android会自动加上。没关系。

现在它会查找是否存在具有此名称的文件,如果存在,它将添加 (1) 在用户编写的部分之后

这些例子展示了文件名是如何演变的:

    "invoice.pdf" -> "invoice.pdf" -> "invoice.pdf (1)"
"invoice" -> "invoice.pdf" -> "invoice (1).pdf"

所以不要将扩展名放在 EXTRA_TITLE 中:

const val CREATE_FILE = 1

private fun createFile() {
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
addCategory(Intent.CATEGORY_OPENABLE)
type = "application/pdf"
putExtra(Intent.EXTRA_TITLE, "invoice")

}
startActivityForResult(intent, CREATE_FILE)
}

关于android - 如果文件存在,为什么 ACTION_CREATE_DOCUMENT Intent 不能正确重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67448143/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com