5

Istnieje poważny brak dokumentacji dotyczącej korzystania z wtyczki do plików Cordova z platformą WP8.System plików WP8/Cordova - czy ktoś zna prawidłowy kod?

Mam aplikację na Androida i iOS, fireOS wszystko, aby wyświetlić zawartość katalogów, pobieranie, zapisywanie i otworzyć wygenerowane pliki z mojego usługa, która wszystko wykorzystać poniższy kod za pomocą wtyczki pliku:

function listDir() { 
//console.log('listDir'); 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail); 

function gotFS(fileSystem) { 
    //console.log('gotFS. filesystem.root = ' + fileSystem.root.value); 
    fileSystem.root.getDirectory("MyFolder", { create: true, exclusive: false }, gotDir); 

} 

function gotDir(dirEntry) { 
    //console.log('gotDir'); 
    // Get a directory reader 
    var directoryReader = dirEntry.createReader(); 

    // Get a list of all the entries in the directory 
    directoryReader.readEntries(success, fail); 

} 

function success(entries) { 
    var i = 0, sb = ''; 
    sb += '<ul data-role="listview" data-inset="true" id="pdfFiles">'; 
    if (entries.length > 0) { 
     for (i = 0; i < entries.length; i++) { 
      sb += '<li><a href="#" data-src="' + entries[i].toURL() + '"><img src="images/icons/icon_pdf.png" class="ui-li-icon" width="16px" height="16px" alt="PDF Icon" />'; 
      sb += entries[i].name; 
      //sb += '<br />'; 
      //sb += entries[i].fullPath; 
      sb += '</a></li>'; 
     } 
    } else { 
     sb += '<li><p>You do not have any saved reports</p></li>'; 
    } 

    sb += '</ul>'; 
    $('#pdfReports-entries').html(sb); 
    $('ul#pdfFiles').listview().listview('refresh'); 

    //open the pdf file using the fileOpener plugin 
    $('ul#pdfFiles li a').on('click', function() { 

     $this = $(this); 
     window.plugins.fileOpener.open($this.attr('data-src')); 
    }); 
} 

function fail(error) { 
    logError("Failed to list directory contents: " + error.code); 
    sb += '<ul data-role="listview" data-inset="true" id="pdfFiles">'; 
    sb += '<li><p>You do not have any saved reports</p></li>'; 

    sb += '</ul>'; 
    $('#pdfReports-entries').html(sb); 
    $('ul#pdfFiles').listview().listview('refresh'); 
} 

}

WP8 wyrzuca następujący błąd w funkcji gotFS:

A first chance exception of type 'System.IO.IsolatedStorage.IsolatedStorageException' occurred in mscorlib.ni.dll 

potem próbował kod na this Github, która nadal nie powiodło się do tworzenia lub odczytu dowolnych katalogów, ale nie wyrzucił wyjątku IsolatedStorageException.

Wiele razy pytałem Google, ale nie mogę udzielić spójnej odpowiedzi.

Czy ktoś wiedzieć, jak korzystać z wtyczki pliku z WP8?

+0

Masz +1 głosowanie na "Brak poważnej dokumentacji" :) Po prostu zgadnij, ale czy upewniłeś się, że dajesz aplikacji uprawnienia dostępu do systemu plików? – CodingWithSpike

+0

Twoje pytanie dokładnie pokazuje mój punkt widzenia! Gdzie/jak mogę to sprawdzić lub włączyć? – DaveSav

+0

Próbowałem tego, ale 'fileSystem.root.value' jest' niezdefiniowane'. Czy działa to tylko na urządzeniu, a nie na emulatorze? – Sumit

Odpowiedz

2

Powiązane z moim komentarzem powyżej, ale chcieliśmy miejsce, aby umieścić kod ...

nie zrobili WP8 app siebie, tylko iOS i Android, ale może aplikacja nie posiada odpowiednich uprawnień ?

nich pójdzie w pliku Properties/WPAppManifest.xml, a wygląda tak:

<Capabilities> 
    <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" /> 
    <Capability Name="ID_CAP_IDENTITY_DEVICE" /> 
    <Capability Name="ID_CAP_IDENTITY_USER" /> 
</Capabilities> 

A lista dostępnych identyfikatorów możliwość jest listed here on MSDN. Chociaż jedyne, co widzę związane z przechowywaniem plików, to ID_CAP_REMOVABLE_STORAGE, więc może to nie jest problem ... Pomyślałem, że powyższy link może być przydatny.

+0

To jest dokładnie odpowiedź. Dodanie ID_CAP_REMOVABLE_STORAGE do WPAppManifest.xml umożliwiło uruchomienie mojego drugiego przykładu kodu. Uwaga dla Apache Cordova; po włączeniu systemu plików WP8 zaktualizuj również manifest. Dziękujemy, @CodingWithSpike, za rozwiązanie tego problemu. – DaveSav

+0

23 godziny później i niestety nie wydaje się to być całą odpowiedzią :(. Asynchroniczne żądanie window.requestFileSystem wydaje się być bardzo powolne w WP8 i zwróci undefined -to przeniosłem to żądanie do zdarzenia ładowania aplikacji (używając obietnice byłyby lepsze) .Wciąż jednak WP8 odmawia zastosowania się do wszystkich innych wtyczek systemu plików Cordova – DaveSav

+0

Dodawanie ID_CAP_REMOVABLE_STORAGE pracowało dla mnie, a nie api plików działa świetnie. – Gillardo

Powiązane problemy