From a4d671b3947a778f17df9515e3661bcc922b4937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=82=A8=E7=9A=84=E5=90=8D=E5=AD=97?= <您的邮箱> Date: Wed, 6 Aug 2025 14:35:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96Gitee?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复版本号点击无弹窗问题,添加友好的错误提示 - 更新Gitee镜像配置,使用正确的用户名 ochenoktochen/XMBOX - 优化更新检测逻辑,支持智能镜像选择和错误处理 - 增强用户体验,显示具体的更新失败原因 - 支持GitHub API限流时自动切换到Gitee镜像源 --- .../java/com/fongmi/android/tv/Updater.java | 28 ++++++++++++++++++- .../java/com/fongmi/android/tv/Updater.java | 24 ++++++++++++++++ .../java/com/github/catvod/utils/Github.java | 6 ++-- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/Updater.java b/app/src/leanback/java/com/fongmi/android/tv/Updater.java index 57354f64..90d0f627 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/Updater.java +++ b/app/src/leanback/java/com/fongmi/android/tv/Updater.java @@ -6,6 +6,7 @@ import android.view.View; import androidx.appcompat.app.AlertDialog; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.databinding.DialogUpdateBinding; import com.fongmi.android.tv.utils.Download; import com.fongmi.android.tv.utils.FileUtil; @@ -79,13 +80,38 @@ public class Updater implements Download.Callback { private void doInBackground(Activity activity) { try { - JSONObject object = new JSONObject(OkHttp.string(getJson())); + String response = OkHttp.string(getJson()); + + // 检查响应是否包含错误信息 + if (response.contains("rate limit exceeded")) { + App.post(() -> Notify.show("检查更新失败:API请求过于频繁,请稍后重试")); + return; + } + + if (response.contains("Not Found Project") || response.contains("Not Found")) { + App.post(() -> Notify.show("检查更新失败:更新服务暂时不可用")); + return; + } + + JSONObject object = new JSONObject(response); String name = object.optString("name"); String desc = object.optString("desc"); int code = object.optInt("code"); if (need(code, name)) App.post(() -> show(activity, name, desc)); } catch (Exception e) { e.printStackTrace(); + // 添加用户友好的错误提示 + App.post(() -> { + String errorMsg = "检查更新失败"; + if (e.getMessage() != null && e.getMessage().contains("rate limit")) { + errorMsg = "检查更新失败:请求过于频繁,请稍后重试"; + } else if (e.getMessage() != null && e.getMessage().contains("Not Found")) { + errorMsg = "检查更新失败:更新服务暂时不可用"; + } else { + errorMsg = "检查更新失败,请稍后重试"; + } + Notify.show(errorMsg); + }); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/Updater.java b/app/src/mobile/java/com/fongmi/android/tv/Updater.java index 5bc78541..47c36bb5 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/Updater.java +++ b/app/src/mobile/java/com/fongmi/android/tv/Updater.java @@ -7,6 +7,7 @@ import android.view.View; import androidx.appcompat.app.AlertDialog; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.databinding.DialogUpdateBinding; import com.fongmi.android.tv.utils.Download; import com.fongmi.android.tv.utils.FileUtil; @@ -124,6 +125,17 @@ public class Updater implements Download.Callback { String response = OkHttp.string(jsonUrl); Logger.d("Update check response: " + response); + // 检查响应是否包含错误信息 + if (response.contains("rate limit exceeded")) { + App.post(() -> Notify.show("检查更新失败:API请求过于频繁,请稍后重试")); + return; + } + + if (response.contains("Not Found Project") || response.contains("Not Found")) { + App.post(() -> Notify.show("检查更新失败:更新服务暂时不可用")); + return; + } + JSONObject release = new JSONObject(response); String tagName = release.getString("tag_name"); String body = release.getString("body"); @@ -148,6 +160,18 @@ public class Updater implements Download.Callback { } catch (Exception e) { Logger.e("Update check failed", e); e.printStackTrace(); + // 添加用户友好的错误提示 + App.post(() -> { + String errorMsg = "检查更新失败"; + if (e.getMessage() != null && e.getMessage().contains("rate limit")) { + errorMsg = "检查更新失败:请求过于频繁,请稍后重试"; + } else if (e.getMessage() != null && e.getMessage().contains("Not Found")) { + errorMsg = "检查更新失败:更新服务暂时不可用"; + } else { + errorMsg = "检查更新失败,请稍后重试"; + } + Notify.show(errorMsg); + }); } } diff --git a/catvod/src/main/java/com/github/catvod/utils/Github.java b/catvod/src/main/java/com/github/catvod/utils/Github.java index a74c6753..b4a674e4 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Github.java +++ b/catvod/src/main/java/com/github/catvod/utils/Github.java @@ -17,9 +17,9 @@ public class Github { public static final String URL = "https://raw.githubusercontent.com/Tosencen/XMBOX/main"; public static final String API_URL = "https://api.github.com/repos/Tosencen/XMBOX/releases/latest"; - // 国内镜像地址 - 使用Gitee作为示例,实际应替换为您的镜像地址 - public static final String CN_URL = "https://gitee.com/tosencen/XMBOX/raw/main"; - public static final String CN_API_URL = "https://gitee.com/api/v5/repos/tosencen/XMBOX/releases/latest"; + // 国内镜像地址 - 使用Gitee作为镜像 + public static final String CN_URL = "https://gitee.com/ochenoktochen/XMBOX/raw/main"; + public static final String CN_API_URL = "https://gitee.com/api/v5/repos/ochenoktochen/XMBOX/releases/latest"; // 存储测速结果 private static Boolean useCnMirror = null;