使用 Cordova 文件插件创建文件时返回 INVALID_MODIFICATION_ERR
Posted
技术标签:
【中文标题】使用 Cordova 文件插件创建文件时返回 INVALID_MODIFICATION_ERR【英文标题】:INVALID_MODIFICATION_ERR return when using Cordova file plugin create file 【发布时间】:2015-11-12 04:35:01 【问题描述】:在android5.1、Nexus 10上使用Cordova文件插件1.3.3版创建和写入文件,
-
按照指南 https://github.com/apache/cordova-plugin-file,并匹配此链接上的要求。
向清单添加权限:android.permission.WRITE_EXTERNAL_STORAGE
requestFileSystem接口返回的文件夹为“file:///storage/emulated/0/”,我们可以访问。
尝试了两个选项,得到相同的错误:
preference name="AndroidPersistentFileLocation" value="Internal"
preference name="AndroidPersistentFileLocation" value="Compatibility"
示例代码:
var fileInfo = new Object();
fileInfo.createFile = true;
fileInfo.filename = "test.txt";
fileInfo.content = "test";
fileInfo.success = function()alert("file Info success");;
fileInfo.error = function() alert("file Info error");;
_write0 = function()
if(fileInfo.createFile)
var _write1 = function(downloadFolder)
theFileSystem.root.getFile(downloadFolder+"/"+fileInfo.filename,create:true,function(f)
f.createWriter(function(writer)
var _write2 = function()
writer.onwriteend = function(evt)
fileInfo.success();
;
var raw = atob(fileInfo.content);
var rawLength = raw.length;
var contentArray = new Uint8Array(new ArrayBuffer(rawLength));
for(var i=0;i<rawLength;i++)
contentArray[i] = raw.charCodeAt(i);
var contentBlob = new Blob([contentArray.buffer]);
writer.write(contentBlob);
;
writer.onwriteend = function(evt)_write2();;
writer.onerror = function(evt)fileInfo.error();;
writer.truncate(0);
);
, function(data)alert("Create File failed."); alert(data););
;
_write1("File/myApp");
;
requestFileSystem(PERSISTENT,1024*1024,function(fs)
theFileSystem = fs;
_write0();
,function(data)alert("requestFileSystem failed."); alert(data););
执行到接口 DirectoryEntry.prototype.getFile 时抛出错误 INVALID_MODIFICATION_ERR(9)。
所以这个插件需要的任何其他配置都可以在 Android 5.1 上运行?
顺便说一句,代码在 iPad 上正常工作。
【问题讨论】:
您找到解决方案了吗?我也有同样的问题。 确保你没有这样的特殊字符,在创建路径时会产生问题,如'/' 【参考方案1】:这个解决方案对我有用。 将配置文件编辑为:
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" android:requestLegacyExternalStorage="true"/>
</edit-config>
</plataform>
找到解决方案here
【讨论】:
【参考方案2】:确保存储在应用权限中启用。
当应用程序尝试请求不存在文件系统时抛出INVALID_MODIFICATION_ERR
。
【讨论】:
以上是关于使用 Cordova 文件插件创建文件时返回 INVALID_MODIFICATION_ERR的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Cordova 文件传输插件上传到 SAP Content Server
Cordova 后退按钮在使用自己的插件后销毁 CordovaActivity