7

BlackBerry にロードしている 2 つのアプリケーションがあります。1 つはネイティブ アプリケーションで、もう 1 つは PhoneGap / Cordova ベースのアプリケーションです。

これら 2 つのアプリケーションは、設定ファイルを共有します。file:///store/home/user/myfile.txt

Cordova 経由でこのファイルにアクセスするには、次のように呼び出します。

fileSystem.root.getFile("home/user/myfile.txt", null, gotFileEntry, fail);

ただし、一部のデバイスfileSystem.rootでは、ファイルが保存されている内部メモリではなく、SDCard ディレクトリが返されるため、FileNotFoundエラーが発生します。

fileSystem.root.getParent(gotParent, fail);ファイルシステムのルートを取得してから、次のように内部メモリからファイルを取得することを期待して、 を呼び出してみました。

parentDir.getFile("store/home/user/myfile.txt", null, gotFileEntry, fail);

しかし、それも機能しません。まだ、ファイルが見つからないというエラーが表示されます。

PhoneGap/Cordova を使用して、内部メモリのルート ディレクトリを毎回取得するにはどうすればよいですか?

4

1 に答える 1

4

どのバージョンの Cordova を使用していますか?
Cordova File-APIは、BlackBerry WebWorks (OS 5.0 以降) 以降でサポートされています。

あなたはそのファイルを読み書きしたいだけだと思いますか?
その場合は、Cordova File-ReaderCordova File-Writerを使用してみてください。

ファイルリーダー

function win(file) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("read success");
        console.log(evt.target.result);
    };
    reader.readAsText(file);
};

var fail = function(evt) {
    console.log(error.code);
};

entry.file(win, fail);

ファイルライタ

function win(writer) {
    writer.onwrite = function(evt) {
        console.log("write success");
    };
    writer.seek(writer.length);
    writer.write("appended text");
};

var fail = function(evt) {
    console.log(error.code);
};

entry.createWriter(win, fail);

それ以外の場合は、そのスニペットを試してみてください (コードは古いプロジェクトのものですが、当時は機能していました)

<script type="text/javascript" charset="utf-8" src="css-js/phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for PhoneGap to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap is ready
//
function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

}

function gotFS(fileSystem) {
    var path = "readme.txt";
    fileSystem.root.getFile(path, {create: true, exclusive: false}, gotFileEntry, fail);

}

function gotFileEntry(fileEntry) {

    fileEntry.createWriter(gotFileWriter, fail);
}

function gotFileWriter(writer) {
    writer.onwrite = function(evt) {
        console.log("write success");
    };
    writer.write("some sample text");

お役に立てれば幸いです。よろしくお願いします F481

于 2012-12-07T13:33:58.303 に答える