diff --git a/app/src/main/java/com/ouxuan/oxface/device/MqttManager.java b/app/src/main/java/com/ouxuan/oxface/device/MqttManager.java index 6e2443e..e5bf584 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/MqttManager.java +++ b/app/src/main/java/com/ouxuan/oxface/device/MqttManager.java @@ -570,12 +570,44 @@ public class MqttManager { if (status == Status.OK) { LogManager.logDebug(TAG, "消息发布成功"); } else { - LogManager.logError(TAG, "消息发布失败: " + errMsg); + String errorMsg = errMsg != null ? errMsg : "未知错误"; + LogManager.logError(TAG, "消息发布失败: " + errorMsg); + + // 记录异常信息以便调试 + if (cause != null) { + LogManager.logError(TAG, "发布异常详情", cause); + } } } @Override public void onSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) { + // 记录详细的调试信息 + String tokenInfo = "null"; + String userContextInfo = "null"; + + try { + if (asyncActionToken != null && asyncActionToken.getTopics() != null) { + tokenInfo = java.util.Arrays.toString(asyncActionToken.getTopics()); + } + } catch (Exception e) { + LogManager.logError(TAG, "获取token信息失败", e); + } + + try { + if (userContext instanceof MQTTRequest) { + userContextInfo = userContext.toString(); + } else if (userContext != null) { + userContextInfo = userContext.toString(); + } + } catch (Exception e) { + LogManager.logError(TAG, "获取userContext信息失败", e); + } + + String debugInfo = String.format("onSubscribeCompleted: status[%s], topics[%s], userContext[%s], errMsg[%s]", + status != null ? status.name() : "null", tokenInfo, userContextInfo, errMsg != null ? errMsg : "null"); + LogManager.logInfo(TAG, "订阅回调详情: " + debugInfo); + if (status == Status.OK) { LogManager.logInfo(TAG, "主题订阅成功: " + subscribeTopic); } else { @@ -583,15 +615,26 @@ public class MqttManager { LogManager.logError(TAG, "主题订阅失败: " + errorMsg); // 检查是否是由于代理程序不可用导致的错误 - if (errorMsg.contains("代理程序不可用")) { + if (errorMsg != null && errorMsg.contains("代理程序不可用")) { LogManager.logError(TAG, "MQTT代理程序不可用,请检查网络连接和腾讯云IoT设备配置"); } + + // 记录异常信息以便调试 + if (cause != null) { + LogManager.logError(TAG, "订阅异常详情", cause); + } } } @Override public void onUnSubscribeCompleted(Status status, IMqttToken asyncActionToken, Object userContext, String errMsg, Throwable cause) { - LogManager.logInfo(TAG, "取消订阅完成: " + errMsg); + String message = errMsg != null ? errMsg : "取消订阅完成"; + LogManager.logInfo(TAG, "取消订阅完成: " + message); + + // 记录异常信息以便调试 + if (cause != null) { + LogManager.logError(TAG, "取消订阅异常详情", cause); + } } @Override