2012-12-01 12 views
8

Ho due applicazioni che sto caricando su un BlackBerry, una è un'applicazione nativa, l'altra è un'applicazione basata su PhoneGap/Cordova.PhoneGap/Cordova BlackBerry FileSystem.root restituisce sempre la scheda SD?

Queste due applicazioni condividono un file di impostazioni: file:///store/home/user/myfile.txt

Per accedere a questo file via Cordova, che io chiamo:

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

Tuttavia, su alcuni dispositivi fileSystem.root restituisce la directory SDCard, non il interna memoria in cui è archiviato il file, quindi ricevo un errore FileNotFound.

Ho provato a chiamare fileSystem.root.getParent(gotParent, fail);, sperando di ottenere la radice del filesystem, quindi ottenere il file dalla memoria interna in questo modo:

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

Ma questo non funziona neanche, ricevo ancora un errore di file non trovato.

Come posso ottenere la directory principale della memoria interna ogni volta, utilizzando PhoneGap/Cordova?

risposta

4

Quale versione di Cordova usi?
Cordova File-API è supportato da BlackBerry WebWorks (OS 5.0 e versioni successive).

Ho ragione nell'assumere che tu voglia solo leggere (e scrivere) quel file?
In tal caso, provare a utilizzare lo Cordova File-Reader e lo Cordova File-Writer.

FileReader

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); 

FileWriter

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); 

Altrimenti dare quel frammento di una prova (il codice è di un vecchio progetto, ma ha lavorato a quel tempo)

<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"); 

Spero di poterti aiutare, migliori saluti F481

Problemi correlati