[
https://issues.apache.org/jira/browse/CB-10093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15034199#comment-15034199
]
ASF GitHub Bot commented on CB-10093:
-------------------------------------
Github user riknoll commented on a diff in the pull request:
https://github.com/apache/cordova-plugin-camera/pull/141#discussion_r46312808
--- Diff: src/android/FileHelper.java ---
@@ -79,30 +79,59 @@ public static String getRealPath(String uriString,
CordovaInterface cordova) {
@SuppressLint("NewApi")
public static String getRealPathFromURI_API19(Context context, Uri
uri) {
String filePath = "";
+
try {
- String wholeID = DocumentsContract.getDocumentId(uri);
+ String id;
+
+ if (DocumentsContract.isDocumentUri(context, uri)) {
+ String wholeID = DocumentsContract.getDocumentId(uri);
- // Split at colon, use second item in the array
- String id = wholeID.indexOf(":") > -1 ? wholeID.split(":")[1]
: wholeID.indexOf(";") > -1 ? wholeID
- .split(";")[1] : wholeID;
+ // Split at colon, use second item in the array
+ id = wholeID.indexOf(":") > -1
+ ? wholeID.split(":")[1]
+ : wholeID.indexOf(";") > -1
+ ? wholeID.split(";")[1]
+ : wholeID;
+ } else {
+ final String uriStr = uri.toString();
+
+ if (
+ uriStr.startsWith(
+
MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString()
+ )
+ ) {
+ id = uriStr.substring(uriStr.lastIndexOf("/") + 1);
+ } else {
+ throw new IllegalArgumentException(
+ "Cannot get real path from uri: " + uriStr
+ );
+ }
+ }
String[] column = { MediaStore.Images.Media.DATA };
// where id is equal to
String sel = MediaStore.Images.Media._ID + "=?";
- Cursor cursor =
context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
column,
- sel, new String[] { id }, null);
+ Cursor cursor = context.getContentResolver().query(
--- End diff --
Nitpick: Can we preserve the formatting of this? I don't think you changed
the code here.
> No file path is returned when selecting picture from third party apps
> ---------------------------------------------------------------------
>
> Key: CB-10093
> URL: https://issues.apache.org/jira/browse/CB-10093
> Project: Apache Cordova
> Issue Type: Bug
> Components: Plugin Camera
> Environment: Android 6.0, Android 5.1.1, Camera plugin 2.0.0, Cordova
> 5.4.0
> Reporter: Ying Wei Loke
> Labels: android
>
> 1) Camera.getPicture with
> - source type: PHOTOLIBRARY
> - destination type: FILE_URI
> 2) On the photo library, open other apps from menu (e.g. gallery/file
> manager/One Drive, etc)
> 3) Select any picture.
> Actual result:
> No file path for the picture selected is returned to the camera plugin.
> Note: Was working previously on plugin version 1.2.0.
> Logs with logcat:
> D/Documents(29453): onActivityResult() code=-1
> V/WindowManager( 543): rotationForOrientationLw(orient=1, last=0); user=0
> D/CordovaInterfaceImpl(15585): Sending activity result to plugin
> D/CameraLauncher(15585): File locaton is:
> I/Timeline(15585): Timeline: Activity_idle id:
> android.os.BinderProxy@16b7c72d time:10419445
> W/System.err(15585): java.io.FileNotFoundException:
> /storage/emulated/0/Android/data/com.likemindnetworks.apps.teamDental/cache:
> open failed: EISDIR (Is a directory)
> W/System.err(15585): at libcore.io.IoBridge.open(IoBridge.java:456)
> W/System.err(15585): at
> java.io.FileOutputStream.<init>(FileOutputStream.java:87)
> W/System.err(15585): at
> java.io.FileOutputStream.<init>(FileOutputStream.java:127)
> W/System.err(15585): at
> java.io.FileOutputStream.<init>(FileOutputStream.java:116)
> W/System.err(15585): at
> org.apache.cordova.camera.CameraLauncher.ouputModifiedBitmap(CameraLauncher.java:595)
> W/System.err(15585): at
> org.apache.cordova.camera.CameraLauncher.processResultFromGallery(CameraLauncher.java:703)
> W/System.err(15585): at
> org.apache.cordova.camera.CameraLauncher.access$000(CameraLauncher.java:66)
> W/System.err(15585): at
> org.apache.cordova.camera.CameraLauncher$1.run(CameraLauncher.java:800)
> W/System.err(15585): at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
> W/System.err(15585): at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
> W/System.err(15585): at java.lang.Thread.run(Thread.java:818)
> W/System.err(15585): Caused by: android.system.ErrnoException: open failed:
> EISDIR (Is a directory)
> W/System.err(15585): at libcore.io.Posix.open(Native Method)
> W/System.err(15585): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
> W/System.err(15585): at libcore.io.IoBridge.open(IoBridge.java:442)
> W/System.err(15585): ... 10 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]