使用Cordova文件插件版本1.3.3在Android5.1,Nexus 10上创建和编写文件,
尝试了两个选项,得到了同样的错误:
首选项名称=“AndroidPersistentFileLocation”值=“内部”
首选项名称=“AndroidPersistentFileLocation”value =“兼容性”
示例代码:
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);});
错误INVALID_MODIFICATION_ERR(9)在执行接口DirectoryEntry.prototype.getFile时抛出。
因此,此插件所需的任何其他配置都适用于Android 5.1?
BTW,代码在iPad上正常运行。
答案 0 :(得分: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
答案 1 :(得分:0)
确保应用权限中的存储 已启用。
当应用尝试请求不存在的文件系统时,会抛出INVALID_MODIFICATION_ERR
。