From 835410709103657d0976b889751b486c39f548eb Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 5 Nov 2016 18:22:26 +0100 Subject: [PATCH] correct file/directory creating on sd cards --- .../simplemobiletools/filemanager/Utils.kt | 4 ++- .../dialogs/CreateNewItemDialog.kt | 26 ++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/simplemobiletools/filemanager/Utils.kt b/app/src/main/java/com/simplemobiletools/filemanager/Utils.kt index c46683dd..b46120b9 100644 --- a/app/src/main/java/com/simplemobiletools/filemanager/Utils.kt +++ b/app/src/main/java/com/simplemobiletools/filemanager/Utils.kt @@ -48,7 +48,9 @@ class Utils { var document = DocumentFile.fromTreeUri(context, Uri.parse(Config.newInstance(context).treeUri)) val parts = relativePath.split("/") for (part in parts) { - document = document.findFile(part) + val currDocument = document.findFile(part) + if (currDocument != null) + document = currDocument } return document } diff --git a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt index ff366dda..e063fd29 100644 --- a/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/filemanager/dialogs/CreateNewItemDialog.kt @@ -52,11 +52,14 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener: } } - private fun createDirectory(file: File, alertDialog: AlertDialog): Boolean { - return if (file.mkdirs()) { - alertDialog.dismiss() - listener.onSuccess() + return if (Utils.needsStupidWritePermissions(context, path)) { + val documentFile = Utils.getFileDocument(context, file.absolutePath) + documentFile.createDirectory(file.name) + success(alertDialog) + true + } else if (file.mkdirs()) { + success(alertDialog) true } else false @@ -68,9 +71,13 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener: private fun createFile(file: File, alertDialog: AlertDialog): Boolean { try { - if (file.createNewFile()) { - alertDialog.dismiss() - listener.onSuccess() + if (Utils.needsStupidWritePermissions(context, path)) { + val documentFile = Utils.getFileDocument(context, file.absolutePath) + documentFile.createFile("", file.name) + success(alertDialog) + return true + } else if (file.createNewFile()) { + success(alertDialog) return true } } catch (ignored: IOException) { @@ -80,6 +87,11 @@ class CreateNewItemDialog(val context: Context, val path: String, val listener: return false } + private fun success(alertDialog: AlertDialog) { + alertDialog.dismiss() + listener.onSuccess() + } + interface OnCreateNewItemListener { fun onSuccess() }