【问题标题】:Ancroid11 : My app does not re-create file if the file erased by other appAndroid 11:如果文件被其他应用程序删除,我的应用程序不会重新创建文件
【发布时间】:2022-01-14 09:37:26
【问题描述】:

我使用的是 Android 11,目标是:

compileSdkVersion 31
默认配置 {
applicationId“com.pro.prowh”
minSdkVersion 24
targetSdkVersion 31
版本代码 16
版本名称“22.01.12”
}

在清单中,我使用:


MyApp 创建文件夹 /storage/emulated/0/Documents/PRO_WH/ :确定
如果删除 PRO_WH 文件夹,任何应用程序,MyApp 都会自动重新删除它:OK

MyApp 在 PRO_WH 中创建一个文件 test.txt,作为 /storage/emulated/0/Documents/PRO_WH/test.txt :OK
(此文件从未创建过)
MyApp 使用新内容重新创建文件 test.txt:OK
MyApp 擦除文件 test.txt:OK
MyApp 使用新内容重新创建文件 test.txt:OK

问题
如果被其他应用程序擦除文件test.txt,例如使用文件管理器,MyApp无法再次创建文件test.txt。错误(IOException):

/storage/emulated/0/Documents/PRO_WH/test.txt:打开失败:EEXIST(文件存在)

文件 test.txt 并不存在。

我需要帮助

如何解决上述问题?

如果文件被其他应用删除,如何重新创建文件?

【问题讨论】:

    标签: android createfile


    【解决方案1】:

    可能是 MediaStore 不知道删除,因此在它的数据库中仍然有该文件的条目。

    如果仍有条目,则不能创建具有相同路径和名称的文件。

    也许重启可以通过自动重新扫描来解决这个问题。

    您可以在媒体存储中查询 DISPLAY_NAME 和 RELATIVE_PATH 以查看

    【讨论】:

    • 感谢您尽快回复。我重启了机器,但没有解决
    【解决方案2】:

    如果文件已经存在,则检查它,然后您可以直接在该文件上写入。

    Android; Check if file exists without creating a new one

    【讨论】:

    • 我知道你的答案,谢谢!但我的问题是:MyApp 可以创建文件,并且可以多次使用它。如果此文件被 OTHER APP 删除,MyApp 不会重新创建它。
    猜你喜欢
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2023-03-07
    相关资源
    最近更新 更多