In einer Cordova Android-App (scrollen Sie nach unten für Gerät, Version, Plugin-Liste, alles recht aktuell wie in diesem Schreiben) Ich möchte bevorzugt speichern Datei auf der externen SD-Karte und verwenden Sie internen Speicher, wenn SDCard nicht dort ist. Ich gründe meine speichern Pfad:Erzwingen externe SD-Karte auf Android mit Cordova und Datei-Plugin
persistentFS= cordova.file.externalDataDirectory||cordova.file.DataDirectory||fileSystem.root.toURL();
Sein eventuellen Wert Datei: ///storage/emulated/0/Android/data/com.fubar.app/files/, gleich wie cordova.file .externalDataDirectory.
Ich habe ein: <access origin="cdvfile://*" /> ... <preference name="AndroidPersistentFileLocation" value="Compatibility" /> <preference name="AndroidExtraFilesystems" value="files-external,sdcard,files,documents,cache,cache-external,root" />
in config.xml, <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
in AndroidManifest.xml und stellen verschiedene Verzauberungen in index.html Sicherheit Metatag. Ich füge hinzu, dass eine SD-Karte eingelegt ist, schreib-aktiviert und ich bestätige, dass ich dazu schreiben kann - zum Beispiel - einen Dateimanager. Es enthält den Ordner Android/data/com.fubar.myapp/files /, wie es sollte.
Alles umsonst: Dateien werden in den internen Gerätespeicher geschrieben - und daraus gelesen. Ich habe alle google scavenged zu diesem Thema gelesen, aber nichts hat mich näher an die Aufgabe gebracht (einige Leute empfehlen die Verwendung des Datei-System-Roots-Plugins, aber es scheint, durch das Datei-Plugin subsumiert worden zu sein).
Irgendwelche Hinweise? TIA, alf
Edit: adb shell benutzen, kann ich sehen, dass die externe SD-Karte Dateien Ordner für die App hat einen absoluten Pfad:
`/storage/extSdCard/Android/data/com.fubar.myapp/files`
und ruft resolveLocalFileSystemURL auf
file:///storage/extSdCard/Android/data/com.fubar.myapp/files
glücklich gelingt. Ich denke nicht, dass dies der richtige Weg ist, da dieser Pfad geräteabhängig ist.
Gerät: Samsung Galaxy Tab 10.5, Lutscher 5.0.1 cordova mit 5.3.1, mit Plugins: cordova-plugin-Gerät 1.0.1 "Gerät" cordova-plugin-Dialoge 1.1.1 Benachrichtigung“ " cordova-plugin-file 3.0.0" Datei " cordova-plugin-Dateiübertragung 1.3.0" Dateiübertragung " cordova-plugin-media 1.0.1" Medien " cordova-plugin-whitelist 1.1.0" Weiße Liste“
Build-Host ist Linux FC21
Kann ich das in Cordova, in Javascript tun? Wenn ich es versuche, ist Context nicht definiert, also würde ich annehmen, dass es sich um eine Java-API handelt, von der Sie sprechen. –