【发布时间】:2020-09-08 15:16:22
【问题描述】:
我的 Cordova 应用程序 (Android) 在“图片”目录中创建一个文件夹 (cordova-plugin-file),并将图像存储到其中。这在 Android 8 上运行良好,但在 Android 10 上出现 File-Error 12 ("The file or directory has the same path already exists." https://developer.mozilla.org/en-US/docs/Web/API/FileError)。
// Get "/storage/emulated/0/" Folder
window.resolveLocalFileSystemURL(window.cordova.file.externalRootDirectory, dir => {
console.log(dir) // This gets executed
// Get / Create "Pictures" Folder
dir.getDirectory("Pictures", { create: true, exclusive: false }, dir => {
console.log(dir) // This also gets executed
// Get / Create "Test" Folder
dir.getDirectory("Test", { create: true, exclusive: false }, dir => {
console.log(dir) // This doesn't
// Create image
dir.getFile(filename, { create: true }, file => {
console.log(file)
file.createWriter(fileWriter => {
fileWriter.write(blob)
resolve()
}, console.error)
}, console.error)
}, console.error) // => FileError: 12
}, console.error)
}, console.error)
当我将行 dir.getDirectory("Test", { create: true, exclusive: false } ... 更改为 dir.getDirectory("Test", { create: false } ... 时,我收到 FileError 1 ("在处理操作时找不到所需的文件或目录。例如,文件没有存在但正在打开。”)。所以我尝试手动创建文件夹,这行没有错误了,但是由于FileError 9 (“不允许修改请求。例如,应用程序可能正在尝试将目录移动到其自己的子目录或将文件移动到其父目录而不更改其名称。")
我的 AndroidManifest.xml 包含该行
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
所以权限也不应该是个问题。请记住,这些错误只会发生在我的 Android 10 设备上,而不是 Android 8 设备上。
有人知道这里发生了什么吗?
【问题讨论】:
-
将
android:requestLegacyExternalStorage="true"添加到清单文件中的应用程序标签。
标签: javascript android cordova