[ 
https://issues.apache.org/jira/browse/CB-5398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16457860#comment-16457860
 ] 

Giuliano Pascali edited comment on CB-5398 at 4/29/18 12:10 AM:
----------------------------------------------------------------

Hi guys after a day I found a solution it works for me. My target was to upload 
without edit photo from gallery with two fast clicks.
 The solution I found was to copy the file that we can't access to put in the 
src of our img.( for the fucking format: 
'_content_://com._android_._providers_._media_._documents_/_document_/_image_%3A99'
 )
 Then we can use the copy like normal jpsg with regular path.
 Here is the full code. Hope you enjoy. One time I can give my part.

 

ps. I'm on andorid 7

<script>
 $(document).ready(function(){

// Take photo from camera
 $('#but_take').click(function(){

navigator.camera.getPicture(onSuccess, onFail,

{ quality: 20, destinationType: Camera.DestinationType.FILE_URL }

);
 });

// Take photo from gallery

$("#but_select").click(function()

{ capturePhoto() }

);

function onFail(message)

{ alert('Failed because: ' + message); }

function capturePhoto() {
 navigator.camera.getPicture(onPhotoURISuccess, onFail,

{ quality: 50, sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
destinationType: Camera.DestinationType.FILE_URI, savePhotoToAlbum : true }

);
 }

function onPhotoURISuccess(imageURI)

{ createFileEntry(imageURI); }

function createFileEntry(imageURI)

{ window.resolveLocalFileSystemURI(imageURI, copyPhoto, fail); }

function copyPhoto(fileEntry) {

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys)

{ fileSys.root.getDirectory("photos",

{create: true, exclusive: false}

, function(dir)

{ fileEntry.copyTo(dir, "file.jpg", onCopySuccess, fail); }

, fail); 
 }, fail); 
 }

function onCopySuccess(entry)

{ //alert(entry.toURL()) var image = document.getElementById('img'); image.src 
= entry.toURL() + '?' + Math.random(); console.log(entry.fullPath) }

function fail(error)

{ console.log(error.code); }

});
 </script>

<div style="margin:0 auto; width:30%!important;text-align: center;">
 <img src="img/cam2.jpg" id='img' style="width: 100px; height: 100px;">
 </div><br/>
 <div style="width:100%; text-align:center; padding:10px;">
 <button id='but_take'>Take photo</button>
 <button id='but_select'>Select photo from Gallery</button>
 </div>

 

 


was (Author: giulians):
Hi guys after a day I found a solution it works for me. My target was to upload 
without edit photo from gallery with two fast clicks.
 The solution I found was to copy the file that we can't access to put in the 
src of our img.( for the fucking format: 
'_content_://com._android_._providers_._media_._documents_/_document_/_image_%3A99'
 )
 Then we can use the copy like normal jpsg with regular path.
 Here is the full code. Hope you enjoy. One time I can give my part.

<script>
 $(document).ready(function(){

// Take photo from camera
 $('#but_take').click(function(){

navigator.camera.getPicture(onSuccess, onFail,

{ quality: 20, destinationType: Camera.DestinationType.FILE_URL }

);
 });

// Take photo from gallery

$("#but_select").click(function()

{ capturePhoto() }

);

function onFail(message)

{ alert('Failed because: ' + message); }

function capturePhoto() {
 navigator.camera.getPicture(onPhotoURISuccess, onFail,

{ quality: 50, sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
destinationType: Camera.DestinationType.FILE_URI, savePhotoToAlbum : true }

);
 }

function onPhotoURISuccess(imageURI)

{ createFileEntry(imageURI); }

function createFileEntry(imageURI)

{ window.resolveLocalFileSystemURI(imageURI, copyPhoto, fail); }

function copyPhoto(fileEntry) {

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSys)

{ fileSys.root.getDirectory("photos", 

{create: true, exclusive: false}

, function(dir)

{ fileEntry.copyTo(dir, "file.jpg", onCopySuccess, fail); }

, fail); 
 }, fail); 
 }

function onCopySuccess(entry)

{ //alert(entry.toURL()) var image = document.getElementById('img'); image.src 
= entry.toURL() + '?' + Math.random(); console.log(entry.fullPath) }

function fail(error)

{ console.log(error.code); }

});
 </script>

<div style="margin:0 auto; width:30%!important;text-align: center;">
 <img src="img/cam2.jpg" id='img' style="width: 100px; height: 100px;">
 </div><br/>
 <div style="width:100%; text-align:center; padding:10px;">
 <button id='but_take'>Take photo</button>
 <button id='but_select'>Select photo from Gallery</button>
 </div>

> Pick image from Library or Photo album on android 4.4
> -----------------------------------------------------
>
>                 Key: CB-5398
>                 URL: https://issues.apache.org/jira/browse/CB-5398
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-android, cordova-plugin-camera
>    Affects Versions: 2.9.0, 3.2.0
>         Environment: android 4.4
>            Reporter: jcesarmobile
>            Assignee: Mike Billau
>            Priority: Major
>             Fix For: 3.5.0
>
>
> An android 4.4 try to pick a photo using pictureSource.PHOTOLIBRARY or 
> pictureSource.SAVEDPHOTOALBUM and return type destinationType.FILE_URI.
> Now android 4.4, when you select the above options, it opens an "open from" 
> dialog that  let you choose from new places as "Recent", "Drive", "Images" 
> and "Downloads" (the names might not be the same as I use the device in 
> spanish and translated it).
> If you choose any of them, you get an error, AndroidProtocolHandler, unable 
> to open content URL: the url here with a content://com.android.providers 
> format.
> I've tested on phonegap 2.9 because this is the version I use, but I suppose 
> it affects all of them. (in fact I use 2.9.1)



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to