我正在开发一个使用PhoneGap的应用程序(现在是Apache Cordova,版本为2.0),并使用PhoneGap File API来编写文件。
我使用的File API可以在以下位置引用: http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File
我从这里使用Ripple Emulator(0.9.9beta):https://developer.blackberry.com/html5/download来测试我在chrome中的应用程序。
但我发现Ripple无法正确处理PhoneGap File API。
例如:
我想在PERSISTENT目录中创建一个文件(root / foo.json)
function onSuccess(fileSystem) {
fileSystem.root.getDirectory("dir", {create: true}, function(dirEntry){
dirEntry.getFile("foo.json", {create: true}, function(fileEntry){
fileEntry.createWriter(function(writer){
writer.write(JSON.stringify(fooData));
}, onfail);
}, onfail);
}, onfail);
}
function onfail(error)
{
console.log(error.code);
}
// request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onfail);
它在iOS模拟器上工作正常,它确实在正确的位置创建了正确的文件,但是在chrome中运行的Ripple Emulator中,我只得到一个onfail回调,并得到错误代码10(FileError.QUOTA_EXCEEDED_ERR)。
我也在这里找到了一个有类似问题的人:Is it able to test phonegap application outside emulator?
但仍然没有答案。
Ripple仿真器目前无法正常运行PhoneGap API吗?或者我错过了一些设置?
答案 0 :(得分:3)
发现问题。我需要在使用PERSISTENT文件系统对象之前授予配额。 https://developers.google.com/chrome/whitepapers/storage#persistent
// Request Quota (only for File System API)
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) {
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) {
console.log('Error', e);
});
似乎Ripple-UI没有为我做这个(我在lib / ripple / fs.js检查了源代码)。这就是为什么我总是得到一个FileError.QUOTA_EXCEEDED_ERR。