2012-12-01 12 views
8

Mam dwie aplikacje, które ładuję na BlackBerry, jedna jest aplikacją natywną, druga to aplikacja oparta na PhoneGap/Cordova.PhoneGap/Cordova BlackBerry FileSystem.root zawsze zwraca kartę SD?

tymi dwiema aplikacjami udostępnić plik ustawień: file:///store/home/user/myfile.txt

Aby uzyskać dostęp do tego pliku poprzez Cordova, wzywam:

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

Jednak na niektórych urządzeniach fileSystem.root Zwraca katalogu SDCard, a nie wewnętrznego pamięć, w której plik jest przechowywany, więc pojawia się błąd FileNotFound.

Próbowałem nazywając fileSystem.root.getParent(gotParent, fail);, chcąc uzyskać korzenia systemu plików, a następnie pobrać plik z pamięci wewnętrznej tak:

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

Ale to nie działa albo, nadal odbierać błąd pliku nie znaleziono.

Jak mogę uzyskać katalog główny pamięci wewnętrznej za każdym razem, używając PhoneGap/Cordova?

Odpowiedz

4

Jakiej wersji Cordova używasz?
Cordova File-API jest obsługiwana od wersji BlackBerry WebWorks (system operacyjny 5.0 lub nowszy).

Czy mam rację, zakładając, że chcesz tylko czytać (i zapisywać) ten plik?
Jeśli tak, możesz spróbować użyć Cordova File-Reader i 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); 

Inaczej podać, że snippet spróbować (kod jest starego projektu, ale pracował w tym czasie)

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

Mam nadzieję, że mogę pomóc, pozdrawiam F481

Powiązane problemy