Javascript Cordova/Phonegap文件功能不工作
我希望有一天科尔多瓦的文件功能能为我工作 这部分代码适用于chrome(hourra!),但不适用于android应用程序:Javascript Cordova/Phonegap文件功能不工作,javascript,android,cordova,Javascript,Android,Cordova,我希望有一天科尔多瓦的文件功能能为我工作 这部分代码适用于chrome(hourra!),但不适用于android应用程序: function errorHandler(e) { var msg = ''; switch (e.code) { case FileError.QUOTA_EXCEEDED_ERR: msg = 'QUOTA_EXCEEDED_ERR'; break; case FileError.NOT_FOUND_ERR:
function errorHandler(e) {
var msg = '';
switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = 'INVALID_STATE_ERR';
break;
default:
msg = 'Unknown Error';
break;
};
alert('Error: ' + msg);
}
function InitFs() {
if ( navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/android/i) ) {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 10*1024*1024, afterInitFs, errorHandler);
} else {
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.LocalFileSystem = window.LocalFileSystem || {PERSISTENT: window.PERSISTENT};
window.requestFileSystem(LocalFileSystem.PERSISTENT, 10*1024*1024, afterInitFs, errorHandler);
}
}
function afterInitFs(fs) {
console.log('Opened file system: ' + fs.name);
fs.sdcard.getFile('test.txt', {create: true, exclusive: false}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('Write completed.');
};
fileWriter.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
var blob = new Blob(['lol'], {type: 'text/plain'});
fileWriter.write(blob);
console.log(fileEntry.isFile + ' / ' + fileEntry.toURL());
}, errorHandler);
}, errorHandler);
}
InitFs();
(对于android,我当然在deviceready事件中添加了initFs,并将sdcard替换为chrome的root。)
所以,我说了两周来最多的一句话:cordova的api文件在我的代码中出了什么问题?试试这个。这对我很有用:
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
function gotFS(fileSystem) {
fileSystem.root.getDirectory("DO_NOT_DELETE",
{create: true, exclusive: false},
gotDirEntry,
fail);
}
function gotDirEntry(dirEntry) {
dir = dirEntry;
dirEntry.getFile("sample.json",
{create: false, exclusive: false},
readSuccess,
fileDonotexist);
}
function fileDonotexist(dirEntry) {
dir.getFile("sample.json",
{create: true, exclusive: false},
gotFileEntry,
fail);
}
function gotFileEntry(fileEntryWrite) {
fileEntryWrite.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
writer.onerror = function(evt) {
};
writer.write(localData);
writer.onwriteend = function(evt) {
dir.getFile("sample.json",
{create: false, exclusive: false},
readSuccess,
fail);
};
}
function readSuccess(fileE) {
fileE.file(readAsText, fail);
}
function fail(error) {
console.log("fail");
}
function readAsText(readerDummy) {
var reader = new FileReader();
reader.onloadstart = function(evt) {};
reader.onprogress = function(evt) {};
reader.onerror = function(evt) {};
reader.onloadend = function(evt) {
console.log("read success");
};
reader.readAsText(readerDummy);
}
我尝试“根目录”和“sdcard”目录。。。什么都没有:/上面的代码在android、ios、bb10和windows 8中对我有效。您的cordova版本是什么?文件,还有你的代码,他应该放在哪里?(filepath)我在手机上设置了根目录,安装了一个文件浏览器和一个搜索终端,但什么都没有。您是否向deviceready添加事件?谢谢您的时间。我正在使用cordova 3.3版本。我没有指定文件路径,因此根据手机的不同,它将存储在SD卡/本地存储中