# -*- coding: utf-8 -*- """修 connectViaRelay 的错误处理,和局域网那条路保持一致。 局域网 connect() 在配对码错时返回 {"ok": false, "error": ...}; 中转这条却抛 IOException —— 界面就没法区分 「配对码错了」/「设备不在线」/「中转连不上」,而这三者处理方式完全不同。 """ from __future__ import annotations import sys from pathlib import Path CLIENT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\android\src" r"\com\lanremote\watch\RemoteClient.java") OLD = ''' RelayTransport relay = new RelayTransport(baseUrl, code, deviceName); if (!relay.attach()) { String reason = relay.getLastError(); relay.close(); throw new IOException(reason == null || reason.isEmpty() ? "连不上中转服务器" : reason); } return startTransport(relay, code, token, listener, timeoutMs); }''' NEW = ''' RelayTransport relay = new RelayTransport(baseUrl, code, deviceName); if (!relay.attach()) { String reason = relay.getLastError(); if (reason == null || reason.isEmpty()) { reason = "连不上中转服务器"; } relay.close(); // 和局域网那条路保持一致:握手被拒要回 ok=false,不要抛异常。 // 抛异常的话界面只能显示"连不上",分不清是配对码错了、 // 设备不在线、还是中转服务器连不上 —— 这三者的处理方式完全不同。 this.serverName = ""; return Json.obj("ok", false, "error", reason); } return startTransport(relay, code, token, listener, timeoutMs); }''' def main() -> int: text = CLIENT.read_text(encoding="utf-8") if OLD not in text: print(" [失败] 锚点没找到(可能已经改过)") return 1 CLIENT.write_text(text.replace(OLD, NEW, 1), encoding="utf-8") print(" connectViaRelay 现在返回 ok=false 而不是抛异常") return 0 if __name__ == "__main__": sys.exit(main())