Hi, I have been hitting my head against the wall for quite some time trying to solve this issue:
I followed this guide for the basic image select and upload.
Sometimes, though, when selecting a picture from my gallery, nothing happens. Checking the logcat, I found it was raising an exception “Unable to resolve file path”. Ok, weird. If I select another picture, it works. Then If i try to select the one that failed, it now works too.
Added a few more debug logs to my code and I found this out:
The pictures that fail at first, gives me this:
"imagePath /storage/emulated/0/DCIM/Camera/IMG_20191102_114727.jpg" ERROR Error: Uncaught (in promise): Object: {"code":0,"message":"Unable to resolve filesystem path."}
Then the pictures that work, gives me this path:
"imagePath file:///storage/emulated/0/Android/data/com.myapp/cache/IMG_20191106_153214.jpg?1573072706848"
After selecting this second picture, I return to the first one and get the following:
"imagePath file:///storage/emulated/0/Android/data/com.myapp/cache/IMG_20191102_114727.jpg?1573072714092"
–
Here’s what my camera.getPicture looks like:
takePicture(sourceType: PictureSourceType) {
var options: CameraOptions = {
quality: 100,
sourceType: sourceType,
saveToPhotoAlbum: false,
correctOrientation: true,
allowEdit: true,
targetWidth: 300
};
this.camera.getPicture(options).then((imagePath : string) => {
if (this.platform.is('android') && sourceType === this.camera.PictureSourceType.PHOTOLIBRARY) {
console.log("imagePath " + imagePath);
this.filePath.resolveNativePath(imagePath) //this throws the exception
.then(filePath => {...}
So… Why the hell some pictures give me a path directly to the camera folder, while some create a copy on my app’s cache before getting selected? And, furthermore, why after opening a picture that creates a copy on cache, all others also do that? Hahahaha
Also, if that is of any use - Considering picture A gives me the camera folder path and picture B gives me the cache path, if I open B first, A works just fine. But if I open A first, it will only work after opening B. I also tried adding file:// to imagePath if it does not start with “file://” but it didn’t work as well.