Android 11
.
将android:requestLegacyExternalStorage
设置为true
。
我的应用可以创建文件并写入其中。然后可以删除该文件并重新创建。
奇怪的问题是,如果用户删除文件(例如,通过使用Files
应用程序),那么我的应用程序无法创建此文件了。Android返回“文件已存在”错误。
出现这种行为的原因是什么?有什么解决方法吗?我正在使用原生C++
/Qt
代码处理文件。
我用来建立档案的程式码:
bool isOk = QFile(path).open(QFile::WriteOnly);
如果path
变量中指定的文件从未被用户删除,则此代码可以正常工作。
这里,另一个开发人员(VaranasiPrasanth-3918)报告了相同的行为。
2条答案
按热度按时间rqenqsqc1#
看来这一切都是由Android内部造成的,我现在不关心了。
我找到了一个解决方案来解释这个问题。这似乎只是Android的bug。这似乎是为了防止应用程序使用其他应用程序之前使用的名称创建文件。而且这个机制没有考虑到这个问题中描述的情况。
解决方法是以不同的名称创建文件,然后将其重命名为所需的名称。请注意,如果文件最初是由另一个应用程序创建的,则此解决方法不起作用。
下面是一个例子:
afdcj2ne2#
您的问题很可能是由MediaStore中仍然存在您的文件条目引起的。
不仅应删除该文件,还应删除此条目。
因此,检查存在并删除条目。或者更好:使用MediaStore删除文件。