Loading commons/src/main/kotlin/com/simplemobiletools/commons/activities/BaseSimpleActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ open class BaseSimpleActivity : AppCompatActivity() { } val destinationFolder = File(destination) if (!destinationFolder.exists()) { if (!destinationFolder.exists() && getDocumentFile(destination) == null) { toast(R.string.invalid_destination) return } Loading commons/src/main/kotlin/com/simplemobiletools/commons/asynctasks/CopyMoveTask.kt +2 −4 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import com.simplemobiletools.commons.helpers.CONFLICT_SKIP import com.simplemobiletools.commons.interfaces.CopyMoveListener import com.simplemobiletools.commons.models.FileDirItem import java.io.File import java.io.FileInputStream import java.io.InputStream import java.io.OutputStream import java.lang.ref.WeakReference Loading Loading @@ -200,12 +199,11 @@ class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = fal var out: OutputStream? = null try { if (!mDocuments.containsKey(destination.parent) && activity.needsStupidWritePermissions(destination.absolutePath)) { mDocuments[destination.parent] = activity.getFileDocument(destination.parent) mDocuments[destination.parent] = activity.getDocumentFile(destination.parent) } out = activity.getFileOutputStreamSync(destination.absolutePath, source.path.getMimeType(), mDocuments[destination.parent]) inputStream = FileInputStream(File(source.path)) inputStream = activity.getFileInputStreamSync(source.path)!! val buffer = ByteArray(DEFAULT_BUFFER_SIZE) var bytes = inputStream.read(buffer) Loading commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/CreateNewFolderDialog.kt +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ class CreateNewFolderDialog(val activity: BaseSimpleActivity, val path: String, when { activity.needsStupidWritePermissions(path) -> activity.handleSAFDialog(path) { try { val documentFile = activity.getFileDocument(path) val documentFile = activity.getDocumentFile(path) documentFile?.createDirectory(path.getFilenameFromPath()) sendSuccess(alertDialog, path) } catch (e: SecurityException) { Loading commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FilePickerDialog.kt +1 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,7 @@ class FilePickerDialog(val activity: BaseSimpleActivity, private fun verifyPath() { val file = File(currPath) if (currPath.startsWith(OTG_PATH)) { val fileDocument = activity.getFileDocument(currPath) ?: return val fileDocument = activity.getDocumentFile(currPath) ?: return if ((pickFile && fileDocument.isFile) || (!pickFile && fileDocument.isDirectory)) { sendSuccess(fileDocument.uri.toString()) } Loading commons/src/main/kotlin/com/simplemobiletools/commons/extensions/Activity.kt +20 −13 Original line number Diff line number Diff line Loading @@ -35,10 +35,7 @@ import com.simplemobiletools.commons.models.Release import com.simplemobiletools.commons.models.SharedTheme import com.simplemobiletools.commons.views.MyTextView import kotlinx.android.synthetic.main.dialog_title.view.* import java.io.File import java.io.FileNotFoundException import java.io.FileOutputStream import java.io.OutputStream import java.io.* import java.util.* fun Activity.toast(id: Int, length: Int = Toast.LENGTH_SHORT) { Loading Loading @@ -448,7 +445,7 @@ fun Activity.rescanPaths(paths: ArrayList<String>, callback: (() -> Unit)? = nul fun BaseSimpleActivity.renameFile(oldPath: String, newPath: String, callback: ((success: Boolean) -> Unit)? = null) { if (needsStupidWritePermissions(newPath)) { handleSAFDialog(newPath) { val document = getFileDocument(oldPath) val document = getDocumentFile(oldPath) if (document == null || (File(oldPath).isDirectory != document.isDirectory)) { callback?.invoke(false) return@handleSAFDialog Loading Loading @@ -512,7 +509,7 @@ fun Activity.hideKeyboard(view: View) { fun BaseSimpleActivity.getFileOutputStream(fileDirItem: FileDirItem, callback: (outputStream: OutputStream?) -> Unit) { if (needsStupidWritePermissions(fileDirItem.path)) { handleSAFDialog(fileDirItem.path) { var document = getFileDocument(fileDirItem.path) var document = getDocumentFile(fileDirItem.path) if (document == null) { val error = String.format(getString(R.string.could_not_create_file), fileDirItem.path) showErrorToast(error) Loading Loading @@ -542,24 +539,33 @@ fun BaseSimpleActivity.getFileOutputStream(fileDirItem: FileDirItem, callback: ( } } fun BaseSimpleActivity.getFileOutputStreamSync(targetPath: String, mimeType: String, parentDocumentFile: DocumentFile? = null): OutputStream? { val targetFile = File(targetPath) fun BaseSimpleActivity.getFileOutputStreamSync(path: String, mimeType: String, parentDocumentFile: DocumentFile? = null): OutputStream? { val targetFile = File(path) return if (needsStupidWritePermissions(targetPath)) { val documentFile = parentDocumentFile ?: getFileDocument(targetFile.parent) return if (needsStupidWritePermissions(path)) { val documentFile = parentDocumentFile ?: getDocumentFile(targetFile.parent) if (documentFile == null) { val error = String.format(getString(R.string.could_not_create_file), targetFile.parent) showErrorToast(error) return null } val newDocument = documentFile.createFile(mimeType, targetPath.getFilenameFromPath()) val newDocument = documentFile.createFile(mimeType, path.getFilenameFromPath()) applicationContext.contentResolver.openOutputStream(newDocument!!.uri) } else { FileOutputStream(targetFile) } } fun BaseSimpleActivity.getFileInputStreamSync(path: String): InputStream? { return if (needsStupidWritePermissions(path)) { val fileDocument = getSomeDocumentFile(path) applicationContext.contentResolver.openInputStream(fileDocument?.uri) } else { FileInputStream(File(path)) } } fun Activity.handleHiddenFolderPasswordProtection(callback: () -> Unit) { if (baseConfig.isPasswordProtectionOn) { SecurityDialog(this, baseConfig.passwordHash, baseConfig.protectionType) { hash, type, success -> Loading @@ -583,11 +589,12 @@ fun Activity.handleAppPasswordProtection(callback: (success: Boolean) -> Unit) { } fun BaseSimpleActivity.createDirectorySync(directory: File): Boolean { if (directory.exists()) if (directory.exists()) { return true } if (needsStupidWritePermissions(directory.absolutePath)) { val documentFile = getFileDocument(directory.absolutePath) ?: return false val documentFile = getDocumentFile(directory.absolutePath) ?: return false val newDir = documentFile.createDirectory(directory.name) return newDir != null } Loading Loading
commons/src/main/kotlin/com/simplemobiletools/commons/activities/BaseSimpleActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ open class BaseSimpleActivity : AppCompatActivity() { } val destinationFolder = File(destination) if (!destinationFolder.exists()) { if (!destinationFolder.exists() && getDocumentFile(destination) == null) { toast(R.string.invalid_destination) return } Loading
commons/src/main/kotlin/com/simplemobiletools/commons/asynctasks/CopyMoveTask.kt +2 −4 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ import com.simplemobiletools.commons.helpers.CONFLICT_SKIP import com.simplemobiletools.commons.interfaces.CopyMoveListener import com.simplemobiletools.commons.models.FileDirItem import java.io.File import java.io.FileInputStream import java.io.InputStream import java.io.OutputStream import java.lang.ref.WeakReference Loading Loading @@ -200,12 +199,11 @@ class CopyMoveTask(val activity: BaseSimpleActivity, val copyOnly: Boolean = fal var out: OutputStream? = null try { if (!mDocuments.containsKey(destination.parent) && activity.needsStupidWritePermissions(destination.absolutePath)) { mDocuments[destination.parent] = activity.getFileDocument(destination.parent) mDocuments[destination.parent] = activity.getDocumentFile(destination.parent) } out = activity.getFileOutputStreamSync(destination.absolutePath, source.path.getMimeType(), mDocuments[destination.parent]) inputStream = FileInputStream(File(source.path)) inputStream = activity.getFileInputStreamSync(source.path)!! val buffer = ByteArray(DEFAULT_BUFFER_SIZE) var bytes = inputStream.read(buffer) Loading
commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/CreateNewFolderDialog.kt +1 −1 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ class CreateNewFolderDialog(val activity: BaseSimpleActivity, val path: String, when { activity.needsStupidWritePermissions(path) -> activity.handleSAFDialog(path) { try { val documentFile = activity.getFileDocument(path) val documentFile = activity.getDocumentFile(path) documentFile?.createDirectory(path.getFilenameFromPath()) sendSuccess(alertDialog, path) } catch (e: SecurityException) { Loading
commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FilePickerDialog.kt +1 −1 Original line number Diff line number Diff line Loading @@ -152,7 +152,7 @@ class FilePickerDialog(val activity: BaseSimpleActivity, private fun verifyPath() { val file = File(currPath) if (currPath.startsWith(OTG_PATH)) { val fileDocument = activity.getFileDocument(currPath) ?: return val fileDocument = activity.getDocumentFile(currPath) ?: return if ((pickFile && fileDocument.isFile) || (!pickFile && fileDocument.isDirectory)) { sendSuccess(fileDocument.uri.toString()) } Loading
commons/src/main/kotlin/com/simplemobiletools/commons/extensions/Activity.kt +20 −13 Original line number Diff line number Diff line Loading @@ -35,10 +35,7 @@ import com.simplemobiletools.commons.models.Release import com.simplemobiletools.commons.models.SharedTheme import com.simplemobiletools.commons.views.MyTextView import kotlinx.android.synthetic.main.dialog_title.view.* import java.io.File import java.io.FileNotFoundException import java.io.FileOutputStream import java.io.OutputStream import java.io.* import java.util.* fun Activity.toast(id: Int, length: Int = Toast.LENGTH_SHORT) { Loading Loading @@ -448,7 +445,7 @@ fun Activity.rescanPaths(paths: ArrayList<String>, callback: (() -> Unit)? = nul fun BaseSimpleActivity.renameFile(oldPath: String, newPath: String, callback: ((success: Boolean) -> Unit)? = null) { if (needsStupidWritePermissions(newPath)) { handleSAFDialog(newPath) { val document = getFileDocument(oldPath) val document = getDocumentFile(oldPath) if (document == null || (File(oldPath).isDirectory != document.isDirectory)) { callback?.invoke(false) return@handleSAFDialog Loading Loading @@ -512,7 +509,7 @@ fun Activity.hideKeyboard(view: View) { fun BaseSimpleActivity.getFileOutputStream(fileDirItem: FileDirItem, callback: (outputStream: OutputStream?) -> Unit) { if (needsStupidWritePermissions(fileDirItem.path)) { handleSAFDialog(fileDirItem.path) { var document = getFileDocument(fileDirItem.path) var document = getDocumentFile(fileDirItem.path) if (document == null) { val error = String.format(getString(R.string.could_not_create_file), fileDirItem.path) showErrorToast(error) Loading Loading @@ -542,24 +539,33 @@ fun BaseSimpleActivity.getFileOutputStream(fileDirItem: FileDirItem, callback: ( } } fun BaseSimpleActivity.getFileOutputStreamSync(targetPath: String, mimeType: String, parentDocumentFile: DocumentFile? = null): OutputStream? { val targetFile = File(targetPath) fun BaseSimpleActivity.getFileOutputStreamSync(path: String, mimeType: String, parentDocumentFile: DocumentFile? = null): OutputStream? { val targetFile = File(path) return if (needsStupidWritePermissions(targetPath)) { val documentFile = parentDocumentFile ?: getFileDocument(targetFile.parent) return if (needsStupidWritePermissions(path)) { val documentFile = parentDocumentFile ?: getDocumentFile(targetFile.parent) if (documentFile == null) { val error = String.format(getString(R.string.could_not_create_file), targetFile.parent) showErrorToast(error) return null } val newDocument = documentFile.createFile(mimeType, targetPath.getFilenameFromPath()) val newDocument = documentFile.createFile(mimeType, path.getFilenameFromPath()) applicationContext.contentResolver.openOutputStream(newDocument!!.uri) } else { FileOutputStream(targetFile) } } fun BaseSimpleActivity.getFileInputStreamSync(path: String): InputStream? { return if (needsStupidWritePermissions(path)) { val fileDocument = getSomeDocumentFile(path) applicationContext.contentResolver.openInputStream(fileDocument?.uri) } else { FileInputStream(File(path)) } } fun Activity.handleHiddenFolderPasswordProtection(callback: () -> Unit) { if (baseConfig.isPasswordProtectionOn) { SecurityDialog(this, baseConfig.passwordHash, baseConfig.protectionType) { hash, type, success -> Loading @@ -583,11 +589,12 @@ fun Activity.handleAppPasswordProtection(callback: (success: Boolean) -> Unit) { } fun BaseSimpleActivity.createDirectorySync(directory: File): Boolean { if (directory.exists()) if (directory.exists()) { return true } if (needsStupidWritePermissions(directory.absolutePath)) { val documentFile = getFileDocument(directory.absolutePath) ?: return false val documentFile = getDocumentFile(directory.absolutePath) ?: return false val newDir = documentFile.createDirectory(directory.name) return newDir != null } Loading