Procházet zdrojové kódy

fix:importScript相对路径错误

Xwite před 4 roky
rodič
revize
385977f5c3
1 změnil soubory, kde provedl 10 přidání a 11 odebrání
  1. 10 11
      app/src/main/java/io/legado/app/help/JsExtensions.kt

+ 10 - 11
app/src/main/java/io/legado/app/help/JsExtensions.kt

@@ -133,26 +133,25 @@ interface JsExtensions {
      * 可从网络,本地文件(阅读私有缓存目录和书籍保存位置支持相对路径)导入JavaScript脚本
      * 可从网络,本地文件(阅读私有缓存目录和书籍保存位置支持相对路径)导入JavaScript脚本
      */
      */
     fun importScript(path: String): String {
     fun importScript(path: String): String {
-        var result: String = ""
-        when {
-            path.startsWith("http") -> result = cacheFile(path) ?: ""
-            path.isContentScheme() -> result = DocumentUtils.readText(appCtx, Uri.parse(path))
-            path.startsWith("/storage") -> result = FileUtils.readText(path)
+        val result = when {
+            path.startsWith("http") -> cacheFile(path) ?: ""
+            path.isContentScheme() -> DocumentUtils.readText(appCtx, Uri.parse(path))
+            path.startsWith("/storage") -> FileUtils.readText(path)
             else -> {
             else -> {
+                //相对路径
+                val jsPath = if (path.startsWith("/")) path else "/" + path
                 //先找书籍保存目录下有没有
                 //先找书籍保存目录下有没有
                 val publicStoragePath = AppConfig.defaultBookTreeUri
                 val publicStoragePath = AppConfig.defaultBookTreeUri
                 val jsString = publicStoragePath?.let {
                 val jsString = publicStoragePath?.let {
-                    val jsPath = if (path.startsWith("/")) path else "/" + path
-                    val filePathString = it + jsPath
-                    val fileUri = Uri.parse(filePathString)
-                    if (fileUri.isContentScheme()) {
+                    if (it.isContentScheme()) {
+                        val fileUri = Uri.parse(it + URLEncoder.encode(jsPath, "UTF-8"))
                         DocumentUtils.readText(appCtx, fileUri)
                         DocumentUtils.readText(appCtx, fileUri)
                     } else {
                     } else {
-                        FileUtils.readText(fileUri.path!!)
+                        FileUtils.readText(it + jsPath)
                     }
                     }
                 }
                 }
                 //私有目录
                 //私有目录
-                result = if (jsString.isNullOrBlank()) readTxtFile(path) else jsString
+                if (jsString.isNullOrBlank()) readTxtFile(path) else jsString
             }
             }
         }
         }
         if (result.isBlank()) throw NoStackTraceException("${path} 内容获取失败或者为空")
         if (result.isBlank()) throw NoStackTraceException("${path} 内容获取失败或者为空")