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) } }