diff --git a/file_picker/CHANGELOG.md b/file_picker/CHANGELOG.md index b80f22b..9db2228 100644 --- a/file_picker/CHANGELOG.md +++ b/file_picker/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.13.1 +Android: adds support to non-legacy picking on Android Q or above (thank you @lakshyab1995). + ## 1.13.0+1 Fixes an issue that could prevent `1.13.0` from being built due to missing `allowCompression` property. diff --git a/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerDelegate.java b/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerDelegate.java index 80bccd3..e783e17 100644 --- a/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerDelegate.java +++ b/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FilePickerDelegate.java @@ -87,9 +87,11 @@ public class FilePickerDelegate implements PluginRegistry.ActivityResultListener final ArrayList paths = new ArrayList<>(); while (currentItem < count) { final Uri currentUri = data.getClipData().getItemAt(currentItem).getUri(); - String path = FileUtils.getPath(currentUri, FilePickerDelegate.this.activity); - if (path == null) { + String path; + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { path = FileUtils.getUriFromRemote(FilePickerDelegate.this.activity, currentUri); + } else { + path = FileUtils.getPath(currentUri, FilePickerDelegate.this.activity); } paths.add(path); Log.i(FilePickerDelegate.TAG, "[MultiFilePick] File #" + currentItem + " - URI: " + currentUri.getPath()); @@ -108,10 +110,11 @@ public class FilePickerDelegate implements PluginRegistry.ActivityResultListener } Log.i(FilePickerDelegate.TAG, "[SingleFilePick] File URI:" + uri.toString()); - fullPath = FileUtils.getPath(uri, FilePickerDelegate.this.activity); - if (fullPath == null) { + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { fullPath = type.equals("dir") ? FileUtils.getFullPathFromTreeUri(uri, activity) : FileUtils.getUriFromRemote(FilePickerDelegate.this.activity, uri); + } else { + fullPath = FileUtils.getPath(uri, FilePickerDelegate.this.activity); } if (fullPath != null) { diff --git a/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java b/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java index a932429..7ca9d8c 100644 --- a/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java +++ b/file_picker/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java @@ -110,7 +110,7 @@ public class FileUtils { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } - final String selection = "_id=?"; + final String selection = MediaStore.Images.Media._ID + "=?"; final String[] selectionArgs = new String[]{ split[1] }; @@ -156,7 +156,7 @@ public class FileUtils { private static String getDataColumn(final Context context, final Uri uri, final String selection, final String[] selectionArgs) { Cursor cursor = null; - final String column = "_data"; + final String column = MediaStore.Images.Media.DATA; final String[] projection = { column }; diff --git a/file_picker/pubspec.yaml b/file_picker/pubspec.yaml index 4f9deaa..3912adb 100644 --- a/file_picker/pubspec.yaml +++ b/file_picker/pubspec.yaml @@ -1,7 +1,7 @@ name: file_picker description: A package that allows you to use a native file explorer to pick single or multiple absolute file paths, with extension filtering support. homepage: https://github.com/miguelpruivo/plugins_flutter_file_picker -version: 1.13.0+1 +version: 1.13.1 dependencies: flutter: