From 2603c00b899b822fe8da8e507b5185d48aaf4205 Mon Sep 17 00:00:00 2001 From: Anish Kumar Date: Sat, 18 Jul 2026 21:55:49 +0530 Subject: [PATCH] Add check to validate that the correct directory access has been granted --- .../godot_gradle_build_environment/BuildEnvironment.kt | 8 +++++++- .../godot_gradle_build_environment/FileUtils.kt | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/godotengine/godot_gradle_build_environment/BuildEnvironment.kt b/app/src/main/java/org/godotengine/godot_gradle_build_environment/BuildEnvironment.kt index bbd9f0d..c0dd9ee 100644 --- a/app/src/main/java/org/godotengine/godot_gradle_build_environment/BuildEnvironment.kt +++ b/app/src/main/java/org/godotengine/godot_gradle_build_environment/BuildEnvironment.kt @@ -207,7 +207,13 @@ class BuildEnvironment(private val context: Context, private val rootfs: String, projectTreeUri = waitForDirectoryAccess(DIR_ACCESS_WAIT_DURATION) ?: throw Exception("Directory access not granted in time. Build canceled.") - outputHandler(OUTPUT_INFO, "Access granted for $projectPath.\nStarting Gradle build...") + + if (!FileUtils.isValidDirSelected(context, projectTreeUri)) { + throw Exception("The selected folder is not a valid project directory. Please try exporting again and select $projectPath." + + "\nIf the problem persists, please create a bug report at [color=#3182CE][url]https://github.com/godotengine/android-editor-buildenv-app/issues[/url][/color]") + } + + outputHandler(OUTPUT_INFO, "Access granted for project directory. Starting Gradle build...") FileUtils.saveProjectTreeUri(context, projectPath, projectTreeUri) // Notify user if limit is reached so they can clear older projects. diff --git a/app/src/main/java/org/godotengine/godot_gradle_build_environment/FileUtils.kt b/app/src/main/java/org/godotengine/godot_gradle_build_environment/FileUtils.kt index a9611fc..bb95c40 100644 --- a/app/src/main/java/org/godotengine/godot_gradle_build_environment/FileUtils.kt +++ b/app/src/main/java/org/godotengine/godot_gradle_build_environment/FileUtils.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.net.Uri import android.os.Build +import android.provider.DocumentsContract import android.util.Log import androidx.documentfile.provider.DocumentFile import java.io.File @@ -194,4 +195,12 @@ object FileUtils { val uriString = prefs.getString(projectPath, null) return uriString?.toUri() } + + fun isValidDirSelected(context: Context, projectTreeUri: Uri): Boolean { + val treeDocumentId = DocumentsContract.getTreeDocumentId(projectTreeUri) ?: return false + // Check if "project.godot" file exists. + val projectGodotUri = DocumentsContract.buildDocumentUriUsingTree(projectTreeUri, "$treeDocumentId/project.godot") + val godotFile = DocumentFile.fromSingleUri(context, projectGodotUri) + return godotFile?.exists() == true + } }