Cordova fichier plugin - enregistrer le fichier dans l'appareil

Je vais avoir beaucoup de problèmes à l'enregistrement de fichiers sur Android.

Le projet est une application hybride développé avec l'Ionique avec ces plugins:

com.phonegap.plugins.fileopener 1.0.0 "File Opener"
com.telerik.plugins.nativepagetransitions 0.4.2 "Native Page Transitions"
cordova-plugin-compat 1.0.0 "Compat"
cordova-plugin-crosswalk-webview 2.0.0 "Crosswalk WebView Engine"
cordova-plugin-file 4.2.0 "File"
cordova-plugin-network-information 1.2.2-dev "Network Information"
cordova-plugin-whitelist 1.2.3-dev "Whitelist"
cordova-plugin-wkwebview-engine 1.0.4-dev "Cordova WKWebView Engine"
ionic-plugin-keyboard 2.2.1 "Keyboard"

Version de la plateforme Android est 5.2.1

L'appareil que j'utilise est un Samsung A7

C'est un résumé de AndroidManifest.xml

<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Décision1

si j'essaie avec cet extrait (en fait de travail sur un autre projet)

JS:

var storagePath = "/storage/emulated/0";
var fileDir = cordova.file.externalDataDirectory.replace(cordova.file.externalRootDirectory, '');
var fileName = $scope.ngDocument.documentId + ".pdf"
var filePath = storagePath + "/" + fileDir + fileName;
$cordovaFile.writeFile(filePath, BINARY_ARR, {'append': false}).then(function(result) {}, function(err) {});

- Je obtenir {"code":5,"message":"ENCODING_ERR"} que le Rappel de la $cordovaFile.writeFile, peu importe si je utiliser le chemin absolu d'un chemin d'accès relatif, juste le nom du fichier et aucun fichier n'est jamais créé.

Case2

Avec cet extrait

JS:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
  console.log('file system open: ' + fs.name);
  fs.root.getFile(fileName, { create: true, exclusive: false }, function (fileEntry) {
    console.log("fileEntry:" + JSON.stringify(fileEntry));
    writeFile(fileEntry, BINARY_ARR);
  }, function(data){});
}, function(data){});

il arrive de deux choses différentes

Cas 2.1

Si pas de config options sont spécifiées dans config.xml l'application crée un dossier vide dans /storage/emulated/0/Android/media/{myAPP}

2.2

avec ces deux préférences

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

un fichier dans /storage/emulated/0 (SSD externe) est créé et dans logcaterreurs sont:

E/Vold    ( 2280): Failed to find mounted volume for /storage/extSdCard/Android/data/{myApp}/files/
W/Vold    ( 2280): Returning OperationFailed - no handler for errno 0
W/ContextImpl(13364): Failed to ensure directory: /storage/extSdCard/Android/data/{myApp}/files
E/Vold    ( 2280): Failed to find mounted volume for /storage/extSdCard/Android/data/{myApp}/files/
W/Vold    ( 2280): Returning OperationFailed - no handler for errno 0
W/ContextImpl(13364): Failed to ensure directory: /storage/extSdCard/Android/data/{myApp}/files
E/Vold    ( 2280): Failed to find mounted volume for /storage/extSdCard/Android/data/{myApp}/cache/
W/Vold    ( 2280): Returning OperationFailed - no handler for errno 0
W/ContextImpl(13364): Failed to ensure directory: /storage/extSdCard/Android/data/{myApp}/cache

Le fait étrange est que /storage/extSdCard (lien symbolique pour /mnt/extSdCard) n'est pas monté alors que le SSD externe est monté sur /mnt/sdcard

S'il vous plaît aider: je suis headbanging.

Le premier extrait a été travail comme un charme dans un autre projet. Pourrait-il être la version de ngCordova?