From aabb73477e8663153c2c60c3be5f16e55ceb7b0d Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Wed, 29 Nov 2023 12:01:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/cache/CacheActivity.kt | 2 ++ .../io/legado/app/ui/config/BackupConfigFragment.kt | 2 +- .../main/java/io/legado/app/utils/FileDocExtensions.kt | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt b/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt index bc3540548..a2b0c4573 100644 --- a/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/cache/CacheActivity.kt @@ -263,6 +263,8 @@ class CacheActivity : VMBaseActivity() val path = ACache.get().getAsString(exportBookPathKey) if (path.isNullOrEmpty()) { selectExportFolder(position) + } else if (FileDoc.fromUri(path.parseToUri(), true).checkWrite() != true) { + selectExportFolder(position) } else if (enableCustomExport()) {// 启用自定义导出 and 导出类型为Epub configExportSection(path, position) } else { diff --git a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt index e65571c5f..a026c6ca9 100644 --- a/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt +++ b/app/src/main/java/io/legado/app/ui/config/BackupConfigFragment.kt @@ -274,7 +274,7 @@ class BackupConfigFragment : PreferenceFragment(), if (backupPath.isContentScheme()) { val uri = Uri.parse(backupPath) val doc = DocumentFile.fromTreeUri(requireContext(), uri) - if (doc?.canWrite() == true) { + if (doc?.checkWrite() == true) { waitDialog.setText("备份中…") waitDialog.setOnCancelListener { backupJob?.cancel() diff --git a/app/src/main/java/io/legado/app/utils/FileDocExtensions.kt b/app/src/main/java/io/legado/app/utils/FileDocExtensions.kt index 3a5aa5f5e..4b65f136c 100644 --- a/app/src/main/java/io/legado/app/utils/FileDocExtensions.kt +++ b/app/src/main/java/io/legado/app/utils/FileDocExtensions.kt @@ -287,6 +287,16 @@ fun FileDoc.delete() { asDocumentFile()?.delete() } +fun FileDoc.checkWrite(): Boolean? { + if (!isDir) { + throw NoStackTraceException("只能检查目录") + } + asFile()?.let { + return it.checkWrite() + } + return asDocumentFile()?.checkWrite() +} + /** * DocumentFile 的 listFiles() 非常的慢,尽量不要使用 */