From 49d5c42fd8e63c4f81dffa93bd0978fee34b6b5c Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Mon, 11 May 2026 01:05:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9F=90=E4=BA=9B=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=E7=9A=84=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/help/FontLoader.kt | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/FontLoader.kt b/app/src/main/java/io/legado/app/help/FontLoader.kt index 256abe9fa..14be873ff 100644 --- a/app/src/main/java/io/legado/app/help/FontLoader.kt +++ b/app/src/main/java/io/legado/app/help/FontLoader.kt @@ -4,32 +4,28 @@ import android.content.Context import android.net.Uri import androidx.documentfile.provider.DocumentFile import io.legado.app.utils.FileDoc +import io.legado.app.utils.isContentScheme import io.legado.app.utils.listFileDocs import java.io.File fun loadFontFiles(context: Context, folderUri: Uri?): List { val fontRegex = Regex("(?i).*\\.[ot]tf") if (folderUri != null) { - val documentFile = DocumentFile.fromTreeUri(context, folderUri) - return documentFile?.let { docFile -> - val fontFiles = mutableListOf() - docFile.listFiles()?.forEach { file -> - if (file.isFile && file.name?.matches(fontRegex) == true) { - fontFiles.add( - FileDoc( - name = file.name ?: "", - isDir = false, - size = file.length(), - lastModified = file.lastModified(), - uri = file.uri - ) - ) + try { + if (folderUri.isContentScheme()) { + val documentFile = DocumentFile.fromTreeUri(context, folderUri) + return documentFile?.listFileDocs { it.name.matches(fontRegex) } ?: emptyList() + } else { + val path = folderUri.path ?: folderUri.toString() + val file = File(path) + if (file.exists()) { + return file.listFileDocs { it.name.matches(fontRegex) } } } - fontFiles - } ?: emptyList() - } else { - val fontPath = "${context.getExternalFilesDir(null)?.absolutePath}/font" - return File(fontPath).listFileDocs { it.name.matches(fontRegex) } + } catch (e: Exception) { + e.printStackTrace() + } } + val fontPath = "${context.getExternalFilesDir(null)?.absolutePath}/font" + return File(fontPath).listFileDocs { it.name.matches(fontRegex) } }