From 66b7f570db9ad9cebecc369491e2713a2ce04457 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Fri, 3 Mar 2023 19:08:30 +0530 Subject: [PATCH] fix: catch exceptions while launching OPEN_DOCUMENT_TREE intent --- .../java/com/itsaky/androidide/fragments/BaseFragment.kt | 7 ++++++- resources/src/main/res/values/strings.xml | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt b/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt index 83aa1fdf4..29573b1e1 100755 --- a/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt +++ b/common/src/main/java/com/itsaky/androidide/fragments/BaseFragment.kt @@ -39,6 +39,7 @@ import androidx.core.provider.DocumentsContractCompat.buildDocumentUriUsingTree import androidx.core.provider.DocumentsContractCompat.getTreeDocumentId import androidx.documentfile.provider.DocumentFile import androidx.fragment.app.Fragment +import com.itsaky.androidide.common.R import com.itsaky.androidide.resources.R.string import com.itsaky.androidide.utils.flashError import java.io.File @@ -106,7 +107,11 @@ open class BaseFragment @JvmOverloads constructor(contentLayoutId: Int = 0) : protected fun pickDirectory(dirCallback: OnDirectoryPickedCallback?) { this.callback = dirCallback - this.startForResult.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)) + try { + this.startForResult.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)) + } catch (e: Exception) { + requireActivity().flashError(getString(R.string.msg_dir_picker_failed, e.message)) + } } fun interface OnDirectoryPickedCallback { diff --git a/resources/src/main/res/values/strings.xml b/resources/src/main/res/values/strings.xml index e828f5157..7cf619f3a 100644 --- a/resources/src/main/res/values/strings.xml +++ b/resources/src/main/res/values/strings.xml @@ -541,4 +541,5 @@ Diagnostics enabled (EXPERIMENTAL) Whether the Java source files should be analyzed for errors or not. Reload color schemes + Failed to start directory picker : %1$s