[
https://issues.apache.org/jira/browse/CB-9891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15000994#comment-15000994
]
Jason Ginchereau commented on CB-9891:
--------------------------------------
I see where the encoding mixup is happening now and I have a fix. I'll submit a
PR soon.
> Inconsistent URI encoding causing permission errors on android
> --------------------------------------------------------------
>
> Key: CB-9891
> URL: https://issues.apache.org/jira/browse/CB-9891
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin Camera, Plugin File
> Affects Versions: 2.1.0, 3.0.0
> Environment: Android 5+
> Reporter: Connor Pearson
> Assignee: Jason Ginchereau
> Labels: Android, reproduced
>
> Using the camera plugin to get a picture from the photo library returns an
> encoded URI. If you then call resolveLocalFileSystemURI the fileEntry object
> returned contains the decoded path component of the URI. This path property
> is used in the toInternalURL function which means it's also decoded. Because
> Android gave us permission to the encoded URI, but not the decoded URI,
> attempting to access the decoded URI results in a permission error.
> {code:javascript}
> document.getElementById("myButton").addEventListener("click", function(){
> navigator.camera.getPicture(function(uri){
> console.log(uri);
> //content://com.android.providers.media.documents/document/image%3A27
> window.resolveLocalFileSystemURI(uri, function(fileEntry){
> console.log(fileEntry.toInternalURL());
> //cdvfile://localhost/content/com.android.providers.media.documents/document/image:27
>
> fileEntry.file(function(){alert("success");},
> function(){alert("fail");});
> },function(error){
> // resolved by pulling in PR 119
> alert("Fail resolveFileSystemURI code: " + error.code);
> });
> }, null, {sourceType: 0, allowEdit: false});
> });
> {code}
> I feel like something must be wrong in one of the plugins, but I'm not sure
> where.
> One possible fix is calling uri.getEncodedPath() instead of uri.getPath in
> LocalFileSystemURL.parse and then removing the call to encodeURI() from
> FileSystem.js, but I'm not sure if this is the right strategy.
> [Example|https://github.com/cjpearson/cordova-plugin-file/commit/b1b9a5f9f5940223c443be5418f86dbea75106f5]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]