我正在尝试通过应该在
iOS和
Android上运行的
online build service构建一个
PhoneGap应用程序,但这个问题集中在Android部分.
该应用程序的主要目标是能够访问和修改文件系统.
从Raymond Camden’s blog post开始,我最终编写了一个与他非常相似的示例应用程序,它以读/写权限访问文件系统.主要区别在于我的应用程序是在线构建的,没有安装任何SDK,也没有关心任何androidManifes.xml文件.
我的问题是我能够访问文件系统(列表目录,读取文件),但我无法在其上写任何内容.
我已经包含了necessary <feature />
tag in the confix.xml以获得文件访问权限:
<feature name="http://api.phonegap.com/1.0/file"/>
以下是我的应用程序中使用的一些示例代码:
// Request fileSystem fileSystem.root.getFile(fileName,{create:true},readFile,onError); // Function that reads a file function readFile(file){ var reader = new FileReader(); reader.onloadend = function(e) { console.log("contents: ",e.target.result); } reader.readAsText(file); }
fileSystem.root.getFile(fileName,function(file){ file.createWriter(function(writer) { writer.onwrite = function() { console.log('writing',arguments); } writer.onerror = function(e) { console.error('error',e); } writer.onwriteend = function() { console.log('writeend',arguments); } //Go to the end of the file... writer.seek(writer.length); // Append a timestamp writerOb.write("Test at "+new Date().toString() + "\n"); }) },onError);
第二个代码示例不在目标文件中写入任何内容,并且onerror处理程序显示它是由于NOT_FOUND_ERR.这只是没有意义,因为我能够读取相同的文件(并且可以找到它).
以同样的方式,当我尝试创建一个新文件(使用相同的代码来写/附加文件代码,但目标文件不存在)时,我收到INVALID_MODIFICATION_ERR错误.
我也尝试了the example in the official documentation,我得到了相同的结果(读取和不写).
请注意,由于PhoneGap正在使用HTML5文件API,我试图按照blobs(以及其他网站)中的建议编写内容,但没有任何运气.
我错过了什么?我是否需要一个单独的插件来编写文件,或者这是通过在线构建工具无法完成的事情,我必须下载SDK并以老式的方式编译应用程序?
P.S.:我的PhoneGap版本是2.3.0.