requestFileSystem dans Cordova 3.4 échoue avec l’erreur “Classe introuvable”

espérant que tout le monde peut le comprendre, ont lutté contre ce problème toute la journée. J’essaie de parcourir les dossiers du système de fichiers pour sélectionner un fichier, mais je n’arrive pas à me connecter au système de fichiers.

Lorsque j’appelle “window.requestFileSystem”, le rappel d’erreur renvoie une erreur “Class not found”. En entrant dans la fonction “requestFileSystem” de Cordova, je remarque que la “Class not found” est retournée pendant l’appel exec () où je ne peux pas la retrouver. Quelqu’un a-t-il surmonté ce problème ou sait-il comment y remédier? Je suis conscient que cela figure sur plusieurs forums, mais les correctifs suggérés ne fonctionnent pas pour moi.

Autant que je sache, tous les plugins sont là. Installés à l’aide de Cordova CLI, ils apparaissent dans le dossier du plug-in. Je me demande si le plug-in de fichier est réellement chargé, pas sûr de savoir comment je peux vérifier cela.

  • org.apache.cordova.console
  • org.apache.
  • cordova.device org.apache.cordova.file
  • org.apache.cordova.file-transfer

www / index.html

  // Init when we're good and ready. function onLoad(){document.addEventListener('deviceready', init, true);} // Init :) function init(){ // window.requestFileSystem is recognized, so far so good. window.requestFileSystem(1, 0, function(fileSystem){ alert('success'); }, function(e){ // 'e' is an object, {code: 'Class not found'} alert('Error accessing local file system'); }); }  

Apache Cordova

...

config.xml

   CWPTakeOnSheetsV1  A sample Apache Cordova application that responds to the deviceready event.   Apache Cordova Team                    

Cordova’s requestFileSystem.js

 /** * Request a file system in which to store application data. * @param type local file system type * @param size indicates how much storage space, in bytes, the application expects to need * @param successCallback invoked with a FileSystem object * @param errorCallback invoked if error occurs resortingeving file system */ var requestFileSystem = function(type, size, successCallback, errorCallback) { argscheck.checkArgs('nnFF', 'requestFileSystem', arguments); var fail = function(code) { errorCallback && errorCallback(new FileError(code)); }; if (type < 0) { fail(FileError.SYNTAX_ERR); } else { // if successful, return a FileSystem object var success = function(file_system) { if (file_system) { if (successCallback) { // grab the name and root from the file system object var result = new FileSystem(file_system.name, file_system.root); successCallback(result); } } else { // no FileSystem object returned fail(FileError.NOT_FOUND_ERR); } }; // The error happens in exec() exec(success, fail, "File", "requestFileSystem", [type, size]); } }; 

Je pense avoir trouvé le problème (du moins dans mon cas). Je me suis battu avec celui-ci, encore et encore:

Ouvrez simplement plugins / android.json et déplacez toutes les entrées sous le titre ‘config.xml’ dans l’en-tête ‘res / xml / config.xml’.

Je pense que c’est un problème avec certains plugins (dans mon cas, Immersify) qui ne sont pas passés au nouvel emplacement config.xml. Après avoir corrigé cela, tous les plugins “manquants” apparaissaient comme par magie dans mon fichier plates-formes / android / res / xml / config.xml, et les erreurs “class not found” disparaissaient.

Avez-vous vérifié le fichier android.json généré dans le dossier plugins? J’ai eu un problème similaire parce que certains plugins “pas encore mis à jour à 3.4” comme sqlite ont généré des directions incorrectes dans ce fichier (qui est utilisé au moment de la construction). Cela a conduit à supprimer d’autres plugins de mon fichier config.xml actuel

J’ai finalement résolu mon problème. Voici les étapes que j’ai suivies pour le faire fonctionner:

  1. Tous les codes JavaScript ont été déplacés dans la section principale de mon index.html (y compris les références aux fichiers .js ).

  2. A pris toutes les balises-caractéristiques de config.xml . Mon /platforms/android/AndroidManifest.xml contient toujours:

      
  3. Pris toutes les alerts() et les fonctions de débogage personnalisées de mon code. Je ne sais pas si le retard a causé des problèmes ou quoi, mais cela semble avoir un effet.

J’ai également remarqué que si window.requestFileSystem n’est undefined , cela est probablement dû à une erreur JavaScript qui l’ window.requestFileSystem se charger.

Il y a un bon exemple de ceci ici – Merci Ram pour la publication de ceci.

Merci @QuickFix pour votre réponse!