/ / ngCordova sqlite plugin database write error on Android - android, sqlite, cordova, ionic-framework

Erreur d’écriture de base de données du plugin ngCordova sqlite sur Android - Android, sqlite, Cordova, ionic-framework

"J'ai un projet avec Cordova (ioniqueframework) avec ngCordova et le plugin cordovaSQLite. Le plugin est installé, js a été ajouté à l'autorisation html, WRITE_EXTERNAL_STORAGE ajoutée à androidmanifest, et les deux lignes suivantes dans mon config.xml

<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="sdcard,cache" />

Cependant, lorsque j'exécute l'exemple de code:

$cordovaSQLite.openDB({name: "wt.db"});
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS people (id integer primary key, firstname text, lastname text)");

Je reçois l'erreur E/cutils(1910): Failed to mkdirat(/storage/usbdisk0/Android): Read-only file system

J'ai vérifié sur mon appareil Android (S3 exécutant AOKP),et j'ai un / storage / usbdisk0 vide mais pas de dossier Android dedans, et même avec un superutilisateur je ne peux pas le créer. J'ai aussi / storage / sdcard0 et / storage / sdcard1 et / storage / emulated (avec 0 et l'héritage à l'intérieur lié à la carte SD interne).

Je suppose que le problème est que le répertoire par défaut que le plugin utilise pour stocker les bases de données est incorrect pour mon téléphone, mais cela signifie qu'il pourrait être incorrect pour le téléphone de n'importe qui.

Si mon hypothèse est correcte, comment puis-je obtenir le plugin pour mettre la base de données au bon endroit?

Réponses:

0 pour la réponse № 1

Je viens de lire ce que mes préférences config.xml (que j'avais copiées et collées à partir d'une documentation) ont réellement dit. Le problème était <preference name="AndroidPersistentFileLocation" value="Compatibility" /> ce qui provoquait la création du fichier au mauvais endroit.

Si je remplace les deux lignes de préférence par <preference name="AndroidPersistentFileLocation" value="internal" />, Je n'ai même plus besoin de demander l'autorisation WRITE_EXTERNAL_STORAGE et cela fonctionne très bien.