2015-09-11 6 views
6

Irgendwie bekomme ich immer einen "Fehlercode 5", wenn ich versuche, das Folgende richtig einzustellen. Was ich tun möchte, ist eine vorhandene Datei von den Assets in Android zu einem zugänglichen Ort auf dem Android-Gerät kopieren, um es in anderen Apps (wie Mail) zu teilen.Cordova: Datei unter Android mit Cordova nicht kopieren

Hier ist mein Codebeispiel:

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
    var storagefolder = cordova.file.dataDirectory; 
    var storagefolderpointer; 
    console.log("storage folder: " + storagefolder); 

    // Check for support. 
    if (window.requestFileSystem) { 
     console.log("filesystem beschikbaar"); 
     var getFSfail = function() { 
      console.log('Could not open filesystem'); 
     }; 
     var getFSsuccess = function(fs) { 

      var getDIRsuccess = function (dir) { 
        console.debug('Got dirhandle'); 
        cachedir = dir; 
        fileurl = fs.root.fullPath + '/' + storagefolder; 
        storagefolderpointer = dir; 
      }; 
      var getDIRfail = function() { 
       console.log('Could not open directory'); 
      }; 

      console.debug('Got fshandle'); 
      FS = fs; 
      FS.root.getDirectory(storagefolder, {create:true,exclusive:false}, getDIRsuccess, getDIRfail); 
     }; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, getFSsuccess, getFSfail); 

     setTimeout(function() { 

      console.log("directory beschikbaar"); 
      var suc = function(entry){ 
       var goe = function(){ 
        console.log("copy success"); 
       }; 
       var fou = function(){ 
        console.log("copy NOT NOT success"); 
       }; 
       entry.copyTo(storagefolder, "vcard.vcf", goe, fou); 
      }; 
      var fai = function(e){ 
       console.log("fail getFile: " + e.code); 
      }; 
      window.resolveLocalFileSystemURL(storagefolderpointer + "www/visitekaart/vcard.vcf", suc, fai); 

     }, 1000); 

    } else { 
     console.log("filesystem NOT NOT NOT available"); 
    } 
+2

In Verbindung mit [dieser Ausgabe] (https://github.com/driftyco/ng-cordova/issues/506)? Siehe den 10. Kommentar – lifeisfoo

+0

Haben Sie versucht, den Dateichooser zu verwenden? https://github.com/MaginSoft/MFileChooser –

+1

Der Fehler ist ein 'ENCODING_ERR' wie in der Dokumentation https://github.com/apache/cordova-plugin-file, bitte geben Sie es in der Frage an, die es relevant sein könnte. –

Antwort

3

haben Sie cordovaFile Plugin verwenden Sie stattdessen, Sie Blob verwenden können Sie den Inhalt Ihrer Dateien zu lesen, als eine neue auf Android sdcard schreiben mit cordovaFile Plugin

$cordovaFile.writeFile('appdata/file.txt', blob, 0).then(function(fileEntry) { 
    //success 
}, function(err) { 
    //err 
}