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 8444b841..717eef4b 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 @@ -258,7 +258,6 @@ public void onCancel(final Object arguments) { activityBinding.addActivityResultListener(this.delegate); this.lifecycle = FlutterLifecycleAdapter.getActivityLifecycle(activityBinding); this.lifecycle.addObserver(this.observer); - } private void tearDown() { 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 +}