not getting the path correctly if the URI contains a file:// Previous to 2.2 this function was crashing if the URI wasn't different than a 'content://' but still if it is a 'file://' it fails getting the correct path. This happens for example picking a picture from dropbox instead of local gallery.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/1d262398 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/1d262398 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/1d262398 Branch: refs/heads/master Commit: 1d26239809fa6c32cc1ed293a911110f551d8985 Parents: 81f283e Author: Alvaro <[email protected]> Authored: Fri Nov 9 09:28:26 2012 +0200 Committer: Alvaro <[email protected]> Committed: Fri Nov 9 09:28:26 2012 +0200 ---------------------------------------------------------------------- framework/src/org/apache/cordova/FileUtils.java | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/1d262398/framework/src/org/apache/cordova/FileUtils.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/FileUtils.java b/framework/src/org/apache/cordova/FileUtils.java index 973b820..46f2e9c 100755 --- a/framework/src/org/apache/cordova/FileUtils.java +++ b/framework/src/org/apache/cordova/FileUtils.java @@ -1069,16 +1069,18 @@ public class FileUtils extends CordovaPlugin { */ @SuppressWarnings("deprecation") protected static String getRealPathFromURI(Uri contentUri, CordovaInterface cordova) { - String uri = contentUri.toString(); - if (uri.startsWith("content:")) { + final String scheme = contentUri.getScheme(); + + if (scheme.compareTo("content") == 0) { String[] proj = { _DATA }; Cursor cursor = cordova.getActivity().managedQuery(contentUri, proj, null, null, null); int column_index = cursor.getColumnIndexOrThrow(_DATA); cursor.moveToFirst(); return cursor.getString(column_index); + } else if (scheme.compareTo("file") == 0) { + return contentUri.getPath(); } else { - return uri; + return contentUri.toString(); } - } }
