From 2088729655a97cbeabaec41467f6dd0db07dd548 Mon Sep 17 00:00:00 2001 From: Miguel Ruivo Date: Thu, 6 Dec 2018 12:20:36 +0000 Subject: [PATCH] fixes an issue where documents with some string path coudln't be loaded on the android 8.0 --- .../plugin/filepicker/FilePickerPlugin.java | 2 +- .../{FilePath.java => FileUtils.java} | 23 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) rename android/src/main/java/com/mr/flutter/plugin/filepicker/{FilePath.java => FileUtils.java} (86%) diff --git a/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerPlugin.java b/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerPlugin.java index c80af08..940ac14 100644 --- a/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerPlugin.java +++ b/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerPlugin.java @@ -48,7 +48,7 @@ public class FilePickerPlugin implements MethodCallHandler { if (data != null) { Uri uri = data.getData(); Log.i(TAG, "URI:" +data.getData().toString()); - String fullPath = FilePath.getPath(uri, instance.context()); + String fullPath = FileUtils.getPath(uri, instance.context()); String cloudFile = null; if(fullPath == null) diff --git a/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePath.java b/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java similarity index 86% rename from android/src/main/java/com/mr/flutter/plugin/filepicker/FilePath.java rename to android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java index 3055cb0..ca034c0 100644 --- a/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePath.java +++ b/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java @@ -8,12 +8,13 @@ import android.os.Build; import android.os.Environment; import android.provider.DocumentsContract; import android.provider.MediaStore; +import android.text.TextUtils; import android.util.Log; /** * Credits to NiRRaNjAN from package in.gauriinfotech.commons;. **/ -public class FilePath +public class FileUtils { private static final String tag = "FilePathPicker"; @@ -56,16 +57,22 @@ public class FilePath Log.e(tag, "+++ Primary External Document URI"); return Environment.getExternalStorageDirectory() + "/" + split[1]; } - } else if (isDownloadsDocument(uri)) - { + } else if (isDownloadsDocument(uri)) { Log.e(tag, "+++ Downloads External Document URI"); final String id = DocumentsContract.getDocumentId(uri); - final Uri contentUri = ContentUris.withAppendedId( - Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); - return getDataColumn(context, contentUri, null, null); - } else if (isMediaDocument(uri)) - { + if (!TextUtils.isEmpty(id)) { + if (id.startsWith("raw:")) { + return id.replaceFirst("raw:", ""); + } + try { + final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); + return getDataColumn(context, contentUri, null, null); + } catch (Exception e) { + Log.e(tag, "+++ Something went wrong while retrieving document path: " + e.toString()); + } + } + } else if (isMediaDocument(uri)) { Log.e(tag, "+++ Media Document URI"); final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":");