• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Mit Javascript und HTML5 File API das Downloadverzeichnis einer App auslesen

zoro17

New member
Hallo zusammen,
ich habe eine Phonegap App, mit der ich aus dem Web Dateien in das lokale Verzeichnis
file:///storage/emulated/0/Download
der App abspeichere. Das klappt wunderbar.

Jetzt ruft die App ein eingebundenes Plugin per Javascript auf, das eine weitere index.html öffnet.
Dieses Plugin soll eine Datei verwenden, die gerade runtergeladen wurde.
Der Name der Datei ist dem Plugin bei Aufruf unbekannt.
Ich habe leider keine Möglichkeit, dem Plugin per Parameteraufruf den Dateinamen mitzugeben.
Für iOS und Android <> 4.3 kann ich den localStorage verwenden. Das Plugin weiß dann, welche Datei zu verwenden ist,
der Name steht im localStorage.
Bei Android 4.3 ist aus Sicherheitsgründen ein übergreifender localStorage zwischen mehreren index.html Seiten untersagt.

Jetzt bin ich auf die Idee gekommen, beim Starten der index.html des Plugin per Javascript und HTML5 File API dieses Download-Verzeichnis der App
auszulesen. Das gelingt mir leider nicht.
Wie kann ich vorgehen, wenn ich den Verzeichnispfad kenne, und den Inhalt bzw. die Dateiliste ermitteln will?
Habe ich überhaupt den Zugriff auf dasselbe Downloadverzeichnis innerhalb der App trotz verschiedener index.html Dateien?
Ich brauche nur die Dateinamen im Javascriptzugriff.

Leider helfen mir die Beispiele von html5rocks und Co. nicht weiter. Entweder sind sie unpassend oder ich bekomme in Eclipse z.B.
"called unimplemented OpenGL ES API".

window.File, window.FileReader, window.FileList funktionieren in der Plugin index.html.
Cordova bzw. Phonegap oder JQuery lassen sich in dem Plugin nicht einbinden, d.h. ich brauche natives HTML5 und Javascript.

Kann mir jemand helfen?
Vielen Dank!
Gruß
 
Hallo j-l-n,
Danke, den Artikel kenne ich. Das Plugin setzt eine bestimmte Android Version voraus.
Ich wollte an der Einstellung nichts ändern. Werde aber jetzt noch Tests machen,
wie weit ich runter gehen kann, damit alles noch funktioniert.
Wenn ich das alles richtig verstanden habe...
Ein Verzeichnisauslesen wäre immer noch wünschenswert, wenn ich damit
Versionsprobleme ausschließen kann.

Gruß

- - - Aktualisiert - - -

Habe es ausprobiert.
Kann mit der TargetVersion leider nicht soweit runtergehen.

Gruß

- - - Aktualisiert - - -

Eine andere Lösung wäre es, wenn sich 2 Webviews innerhalb der gleichen App untereinander "unterhalten" könnten.
Parameteraufrufe und localStorage (wegen Android 4.3) scheiden aus.
Deshalb wollte ich dies auf Dateiebene erreichen.
Falls jemand dazu etwas weiß, bitte gerne...

Vielen Dank.
Gruß
 
Wie sieht's denn allgemein mit Java aus? Entsprechend signiert kann man mit einem Java Applet vollumfänglich auf das lokale Filesystem zugreifen. Ich weiss halt nicht, ob das auch auf Android geht, ich mache sowas immer nur mit Desktop Browsern und einem herkömmlichen OS wie z.B. Windows oder Linux.
 
Hallo mikdoe,
bin untwegs...
Danke für die Info. Es ist eine hybride App, da gibts nur Javascript, HTML5 und diese
Plugins. Mehr geht nicht.
Der Traum wäre eine Javascript Funktion: Pfad als Paramter rein, Liste der Dateien raus.
Helfen würde auch, Metadaten einer bestimmten Datei abzufragen, denn die Dateien sind durchnummeriert. Die Webview des Plugins könnte kurz durchprobieren...
Gruss
 
hallo zusammen,
bin immernoch unterwegs, kann leider erst spät antworten.
mikdoe:
ich kenn firefox apps zu wenig, aber alles scheinen webapps zu sein mit einer webview. also html5 mit javascript. kann in meine hybride app javascript files einbinden, also funktionen nutzen...
j-l-n:
aber die 2. webview lässt leider kein phonegap zu.
in der 1. webview mache ich aber das und lade dateien runter. klappt prima, aber für native html5 file api bin ich anscheinend zu blöd. evtl. liegts auch an berechtigungen oder das die 2. webview nicht in das downloadverzeichnis schauen darf. denke aber, es ist das downloadverzeichnis der app und nicht der 1. webview. sollte eigentlich gehen...
gruß
 
hallo j-l-n,
das geht schon. es gibt das sandbox prinzip. sonst könnte ich auch nichts runterladen, umbenennen oder löschen. die daten gehören der app. ob nochmals innerhalb der webview unterschieden wird, weiss ich nicht. glaube ich aber nicht.
ähnlich funktioniert localstorage. das local bezieht sich auf die berechtigung. eine webapp darf auch runterladen und seine dateien lesen...
gruss
 
es gibt das sandbox prinzip. sonst könnte ich auch nichts runterladen, umbenennen oder löschen. die daten gehören der app.
Korrigiert mich bitte jemand, falls ich jetzt etwas falsches sage (habe mich damit noch nicht beschäftigt), aber mit der HTML5 File-API kannst du ohne manuelle Aktion des Users gar nichts runterladen, umbenennen oder gar löschen.
Das geht nur (begrenzt) mit Web-Apps und "echten" Apps.
Von daher, wie willst du das realisieren? Nur mit HTML5/JS wird es nicht klappen, ausgeschlossen. Du benötigst dafür mindestens eine Web-App mit entsprechenden Berechtigungen - eine normale HTML-Seite funktioniert sicher nicht.

Ich befürchte, dass wir gerade etwas aneinander vorbeireden. Deshalb nochmal explizit: was verstehst du unter "Web-App"?
 
ich denke, in der sandbox geht alles.
Denke ich nicht - wäre wohl noch schöner, wenn Webseiten einfach Dateien auf dem Rechner des Users speichern können (mal abgesehen von Cookies). Aber an dieser Stelle bin ich aus diesem Thread raus, kenne mich zu wenig damit aus. Ich kann bloß nochmal das betonen, dessen ich ziemlich sicher bin: mit HTML5 alleine klappt das nicht. Nur in einer Webapp.

PS: das Beispiel auf HTML5rocks funktioniert schonmal kein bisschen - egal auf welchen Button ich klicke, es tut sich schlicht und einfach gar nix...
 
hallo zusammen,
ich habe was auf github gefunden, was meine ansprüche theoretisch genügen sollte. werde es testen...
zum thema web oder web app:
ich habe keine web seite, sondern eine hybride app, dh mischung aus native u webview. sowohl safari u chrome unterstützen die file api in der webview ( = kurz gesagt browser ohne menüs), wenn man die einstellungen abfragt.
reines web war nie thema, aber ich denke, das geht auch hier.
werde mich aber auf die webview konzentrieren.
hesst, woher weißt du, dass es aus chrome rausfliegen soll?
wenn dem so wäre, muss ich alles per phonegap bzw. cordova lösen.
danke u gruß.
 
ok, das wusste ich nicht. dann hat sich file api schiene erledigt.
werde filehandling dann komplett über phonegap machen.
gruss
 
ja klar. ich kann in webview1, also die mit phonegap, mit dateien anstellen, was ich will, wenn webview2 das nicht mitbekommt, welche datei es zu laden hat, nützt das nichts. die 2 webviews verstehen sich nicht. jetzt habe ich eine möglichkeit gefunden, so dass die webview1 immer eine richtige instanz der webview2 aufruft, d.h. die webview2 kann so "doof" bleiben, wie sie ist. sie braucht keine file api mehr.
gruss
 
Zurück
Oben