[ https://issues.apache.org/jira/browse/CB-10798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15200631#comment-15200631 ]
ASF GitHub Bot commented on CB-10798: ------------------------------------- Github user rakatyal commented on a diff in the pull request: https://github.com/apache/cordova-plugin-file/pull/170#discussion_r56595658 --- Diff: src/android/FileUtils.java --- @@ -1113,7 +1160,8 @@ public void onRequestPermissionResult(int requestCode, String[] permissions, } switch(requestCode) { - case READ_PERM: + case READ_PERM_FILE: + case WRITE_PERM_FILE: --- End diff -- Done. > Cannot create folder into cordova.file.externalRootDirectory on Android 6.x > Marshmallow > --------------------------------------------------------------------------------------- > > Key: CB-10798 > URL: https://issues.apache.org/jira/browse/CB-10798 > Project: Apache Cordova > Issue Type: Bug > Components: Plugin File > Affects Versions: 4.1.1 > Environment: Android 6.0.1 (Nexus 9 and other 6.x devices), Cordova > cli 6.0.0, Android platform 5.1.0 > Reporter: Vito Macchia > Assignee: Raghav Katyal > Labels: android, triaged > > Cannot create folder into cordova.file.externalRootDirectory on Android 6.x > Marshmallow. It always returns encording error (12), while on Android 5.x > (Lollipop) the same code works fine. > On Marshmallow devices I can succesfully create folders only into > cordova.file.externalDataDirectory. > No matter the value of preference AndroidPersistentFileLocation or > AndroidExtraFilesystems. > Code (some ES6, sorry) > This snippet uses WinJS Promises - should work with native promises as well > or you can just remove promises and pass succes and fail callbacks. It should > create MY_Folder/test (both folders, like mkdirp) in the SD Card (regardless > if emulated or not) root directory. It works fine with 5.x devices, but > returns always FileError.ENCODING_ERR on Marshmallow. > {code:title=createDirectory.js|borderStyle=solid} > function errorCode(e) { > var msg = ''; > switch (e.code) { > case FileError.ABORT_ERR: > msg = 'ABORT_ERR'; > break; > case FileError.ENCODING_ERR: > msg = 'ENCODING_ERR'; > break; > case FileError.NOT_READABLE_ERR: > msg = 'NOT_READABLE_ERR'; > break; > case FileError.PATH_EXISTS_ERR: > msg = 'PATH_EXISTS_ERR'; > break; > case FileError.QUOTA_EXCEEDED_ERR: > msg = 'QUOTA_EXCEEDED_ERR'; > break; > case FileError.NOT_FOUND_ERR: > msg = 'NOT_FOUND_ERR'; > break; > case FileError.SECURITY_ERR: > msg = 'SECURITY_ERR'; > break; > case FileError.INVALID_MODIFICATION_ERR: > msg = 'INVALID_MODIFICATION_ERR'; > break; > case FileError.INVALID_STATE_ERR: > msg = 'INVALID_STATE_ERR'; > break; > default: > msg = 'Unknown Error'; > break; > }; > console.log('Error: ' + msg, "CODE", e); > return msg; > } > const STATIC_CONTENT_DIR = 'MY_Folder/test'; > function createDirectory(startDirectory = cordova.file.externalRootDirectory) > { > return new WinJS.Promise(function(success, fail) { > window.resolveLocalFileSystemURL(startDirectory, function(directory) { > console.log("FS ROOT", directory); > function fileGetDir(path, cb) { > console.log("*** PATH", path); > var fnGetOrCreateDir = function(p, de) { > var entry = p.shift(); > console.log("PATH", path); > if (entry) { > de.getDirectory(entry, { > create: true, > exclusive: false > }, function(dirEntry) { > console.log("CR", dirEntry); > fnGetOrCreateDir(p, dirEntry); > }, fileFSError); > } else > if (cb) cb(de); > }; > if (path) { > var arPath = path.split("/"); > fnGetOrCreateDir(arPath, directory.filesystem.root); > } else { > if (cb) cb(directory); > } > } > fileGetDir(STATIC_CONTENT_DIR, onSuccess); > }, fileFSError); > function fileFSError(e) { > console.log(e.code); > try { > console.log("fileFSError: " + JSON.stringify(e) + > errorCode(e)); > fail(e); > } catch (err) { > fail(err); > } > } > function onSuccess(dirEntry) { > console.log(dirEntry.fullPath); > success(dirEntry.fullPath) > } > }); > } > {code} > I suspect it has something to do with the way the storage should be handled > on Marshmallow, see for instance > http://developer.android.com/guide/topics/data/data-storage.html and > https://source.android.com/devices/storage/ -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org