In un'applicazione cordova android (scorrere verso il basso per dispositivo, versione, elenco di plug-in, tutto abbastanza aggiornato al momento della stesura) Desidero memorizzare preferenzialmente file sulla SDCard esterna e utilizzare la memoria interna se SDCard non è presente. Sto impostando il percorso di salvataggio a:Forzare sdcard esterna su Android con cordova e plug-in file
persistentFS= cordova.file.externalDataDirectory||cordova.file.DataDirectory||fileSystem.root.toURL();
Il suo valore finale è il file: ///storage/emulated/0/Android/data/com.fubar.app/files/, uguale a cordova.file .externalDataDirectory.
ho impostato: <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 e impostare vari incantesimi in index.html Security metatag. Aggiungo che una SDcard è inserita, abilitata per la scrittura e I confermano che posso scrivere ad essa con - per esempio - un gestore di file. Lo contiene la cartella Android/data/com.fubar.myapp/files /, come dovrebbe.
Tutto per niente: i file vengono scritti e letti dalla memoria interna del dispositivo. Ho letto tutto ciò che Google ha scavato su questo argomento, ma nulla mi ha avvicinato all'attività (alcuni suggeriscono di usare il plugin file-system-root, ma sembra che sia stato inserito dal plugin del file).
Eventuali suggerimenti? TIA, alf
Edit: Utilizzando adb shell, posso vedere che la cartella dei file sdcard esterna per l'applicazione ha un percorso assoluto di:
`/storage/extSdCard/Android/data/com.fubar.myapp/files`
e chiamando resolveLocalFileSystemURL su
file:///storage/extSdCard/Android/data/com.fubar.myapp/files
riesce felicemente. Non penso che sia la strada da percorrere, poiché quel percorso dipende dal dispositivo.
dispositivo: Samsung Galaxy tab 10.5, lollipop 5.0.1 utilizzando Cordova 5.3.1, con i plugin: Cordova-plugin-dispositivo 1.0.1 "Device" Cordova-plugin-dialoghi 1.1.1 "Notifica " cordova-plugin-file 3.0.0" File " cordova-plugin-file-transfer 1.3.0" File Transfer " cordova-plugin-media 1.0.1" Media " cordova-plugin-whitelist 1.1.0" Whitelist "
L'host di compilazione è Linux FC21
Posso farlo in cordova, in javascript? Se provo, Context non è definito, quindi suppongo che sia un'API Java di cui stai parlando. –