From 93f0d28823c121aa75468853925db4abdda2bf83 Mon Sep 17 00:00:00 2001 From: ChenTian-plaud Date: Mon, 16 Dec 2024 14:58:26 +0800 Subject: [PATCH 1/2] [fix] Fix the issue where the last modified time of a file is lost after selecting the file. --- .../flutter/plugin/filepicker/FileUtils.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java b/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java index 23f34692..72fa1248 100644 --- a/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java +++ b/android/src/main/java/com/mr/flutter/plugin/filepicker/FileUtils.java @@ -294,6 +294,21 @@ public static FileInfo openFileStream(final Context context, final Uri uri, bool final File file = new File(path); + // getLastModified + long fileTime = 0L; + try { + Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); + if (cursor != null) { + int columnIndex = cursor.getColumnIndex(DocumentsContract.Document.COLUMN_LAST_MODIFIED); + if (columnIndex != -1 && cursor.moveToFirst()) { + fileTime = cursor.getLong(columnIndex); + } + cursor.close(); + } + } catch (Exception e) { + Log.e(TAG, "Error getting SAF file time", e); + } + if(!file.exists()) { file.getParentFile().mkdirs(); try { @@ -313,6 +328,15 @@ public static FileInfo openFileStream(final Context context, final Uri uri, bool } finally { fos.getFD().sync(); } + + // setLastModified + if (fileTime != 0 && file.exists()) { + boolean success = file.setLastModified(fileTime); + if (!success) { + Log.w(TAG, "Failed to set last modified time for file: " + file.getAbsolutePath()); + } + } + } catch (final Exception e) { try { fos.close(); @@ -479,4 +503,4 @@ private static void recursiveDeleteFile(final File file) throws Exception { file.delete(); } -} \ No newline at end of file +} From 1787e4474eae2997b20128b5d4ec463d145153f6 Mon Sep 17 00:00:00 2001 From: ChenTian-plaud Date: Mon, 16 Dec 2024 16:00:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20register?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flutter/plugin/filepicker/FilePickerPlugin.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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 33ec788e..1882edff 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 @@ -254,16 +254,17 @@ public void onCancel(final Object arguments) { }); this.observer = new LifeCycleObserver(activity); - if (registrar != null) { - // V1 embedding setup for activity listeners. - application.registerActivityLifecycleCallbacks(this.observer); - registrar.addActivityResultListener(this.delegate); - } else { +// TODO 3.28移除了 +// if (registrar != null) { +// // V1 embedding setup for activity listeners. +// application.registerActivityLifecycleCallbacks(this.observer); +// registrar.addActivityResultListener(this.delegate); +// } else { // V2 embedding setup for activity listeners. activityBinding.addActivityResultListener(this.delegate); this.lifecycle = FlutterLifecycleAdapter.getActivityLifecycle(activityBinding); this.lifecycle.addObserver(this.observer); - } +// } } private void tearDown() {