From 7ca00b9626d029e03f9aa15317e992c317627f56 Mon Sep 17 00:00:00 2001 From: shenzuqiang Date: Wed, 11 Mar 2026 18:06:30 +0800 Subject: [PATCH] =?UTF-8?q?Dev=EF=BC=9A=201=E3=80=81=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E4=BB=A3=E7=A0=81=E6=B7=BB=E5=8A=A0=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/img/rabbit/utils/UniAppUtils.kt | 56 ++++++++----------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt b/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt index 54b25e6..a3fd0b3 100644 --- a/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt +++ b/app/src/main/java/com/img/rabbit/utils/UniAppUtils.kt @@ -111,29 +111,22 @@ object UniAppUtils { */ private fun checkUpdate(uniVersion: UniVersionEntity, currentVersion: String): Boolean { val version = uniVersion.version - if(version.isEmpty()){ - return false - } + if(version.isEmpty())return false + val newVersions = version.split(".") val originVersions = currentVersion.split(".") - if(newVersions.size != 3){ - return false - } - if(originVersions.size != 3){ - return false - } - try { - for (i in 0..2) { - if (Integer.parseInt(newVersions[i]) > Integer.parseInt(originVersions[i])) { - return true - } else if (Integer.parseInt(newVersions[i]) < Integer.parseInt(originVersions[i])) { - return false - } + if(newVersions.size != 3 || originVersions.size != 3)return false + + for (i in 0..2) { + val newVal = newVersions[i].toIntOrNull() ?: 0 + val oldVal = originVersions[i].toIntOrNull() ?: 0 + + if (newVal > oldVal) { + return true + } else if (newVal < oldVal) { + return false } - }catch (e: Exception){ - e.printStackTrace() - Log.w(TAG, "checkUpdate: 解析版本号时,版本号格式错误 $version") } return false } @@ -407,27 +400,22 @@ object UniAppUtils { api.sendReq(req) } - suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) {val client = OkHttpClient() + private val okHttpClient: OkHttpClient by lazy { + OkHttpClient.Builder() + // 如果需要,可以在这里配置超时、缓存等 + // .connectTimeout(15, TimeUnit.SECONDS) + .build() + } + suspend fun isFileDownloadable(url: String): Boolean = withContext(Dispatchers.IO) { val request = Request.Builder().url(url).build() try { - client.newCall(request).execute().use { response -> - val body = response.body ?: return@withContext false + okHttpClient.newCall(request).execute().use { response -> + val body = response.body val fileSize = body.contentLength() // 下载文件小于1KB,需要判断Url是否可靠 if (fileSize < 1024) { - if (!response.isSuccessful) { - val errorBody = body.string() // string() 会内部读取并关闭 body,但外层有 .use 更保险 - if (response.header("Content-Type")?.contains("application/json") == true) { - Log.i(TAG, "下载失败...$errorBody") - } else { - Log.i(TAG, "服务器错误...$errorBody") - } - return@withContext false - } else { - Log.i(TAG, "文件正常,可以下载!") - return@withContext true - } + return@withContext response.isSuccessful } else { return@withContext true }