From 9a588e99261a3a5dd652ced2e0154d98d0de5e5c Mon Sep 17 00:00:00 2001 From: izzy2lost Date: Wed, 13 Aug 2025 11:02:04 -0400 Subject: [PATCH] we are getting there. SAFLY --- .../java/com/starship/android/MainActivity.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/starship/android/MainActivity.java b/android/app/src/main/java/com/starship/android/MainActivity.java index b5348431..3ced02e6 100644 --- a/android/app/src/main/java/com/starship/android/MainActivity.java +++ b/android/app/src/main/java/com/starship/android/MainActivity.java @@ -608,7 +608,7 @@ private boolean copyFromBestSourceToSaf(DocumentFile userRoot) { return copied > 0; } -// When user picks sf64.o2r via SAF, copy into INTERNAL (engine reads from here) +// When user picks sf64.o2r via SAF, copy into INTERNAL (engine reads from here) AND user folder (for persistence) private void handleRomFileSelection(Uri selectedFileUri) { if (selectedFileUri == null) { showToast("No sf64.o2r selected."); @@ -631,8 +631,19 @@ private void handleRomFileSelection(Uri selectedFileUri) { out.getFD().sync(); Log.i(TAG, "sf64.o2r copied to internal (" + total + " bytes): " + dest.getAbsolutePath()); - -runOnUiThread(() -> showPortraitDialog("sf64.o2r ready", + // Also copy to user's selected folder if one exists + if (userFolderUri != null) { + DocumentFile userRoot = DocumentFile.fromTreeUri(this, userFolderUri); + if (userRoot != null) { + if (copyFileToTree(dest, userRoot, "application/octet-stream")) { + Log.i(TAG, "sf64.o2r also copied to user's selected folder"); + } else { + Log.w(TAG, "Failed to copy sf64.o2r to user's selected folder"); + } + } + } + + runOnUiThread(() -> showPortraitDialog("sf64.o2r ready", "sf64.o2r copied. Restart to load the game.", DialogActivity.DIALOG_TYPE_FILE_READY)); } catch (IOException e) {