5

私は PhoneGap (現在はバージョン 2.0 の Apache Cordova) を使用するアプリケーションに取り組んでおり、PhoneGap File API を使用してファイルを書き込みます。

私が使用するファイル API は、http: //docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#Fileで参照できます。

https://developer.blackberry.com/html5/downloadから Ripple Emulator (0.9.9beta) を使用して、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 シミュレーターでは正常に動作しますが、クロムで実行されている Ripple Emulator では、onfail コールバックが発生し、エラー コード 10 (FileError.QUOTA_EXCEEDED_ERR) が発生しました。

ここでも同様の質問をしている人を見つけました: Is it can test phonegap application outside emulator?

しかし、まだ答えはありません。

Ripple エミュレーターは現在、PhoneGap API に対して正しく動作しませんか? それとも設定ミス?

4

1 に答える 1

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 が発生します。

于 2012-09-28T04:45:46.060 に答える