我理解你的困惑了。你可以自已为每条消息生成指纹码(实际上当你不指定消息批评纹码时,sdk层会自已生成),并保存到你的全局消息数据模型中,回过来头来,你也就能通过指纹码反查到你刚才这条消息的数据对象了。 下面这段是RainbowChat中发送文本消息的代码,你参考一下: /** * 将指定的图片消息发送给聊天中的好友(异步方式). * <p> * 说明:安卓2.3及以后系统中规定:发送网络数据须在单独的线程中。 * </p> * * @param message 文本消息,如果该文本为null或空字符串则不会真正执行发送过程 * @return code:0 表示发送成功,否则错误码 * @see #sendMessageAsync(Activity, int, String, String, String, Observer) */ public static void sendPlainTextMessageAsync(final Activity activity , final String friendUID, final String message, final Observer sucessObsExtra) { // 先生成指纹码 final String fingerPring = Protocal.genFingerPrint(); // 消息指令通过网络发送成功后要通知的观察者 Observer sendSucessObs = new Observer() { @Override public void update(Observable o, Object arg) { // 消息发送成功后,将此消息数据放到聊天列表的数据模型中(让UI进行显示) ChatDataHelper.addChatMessageData_outgoing(activity, friendUID , MessageExt.createChatMsgEntity_OUTGO_TEXT(message, fingerPring)); // 消息发送调用者的额外要做的事 if(sucessObsExtra != null) sucessObsExtra.update(null, null); } }; // 调用真正的消息指令发送方法 sendMessageAsync(activity, MsgBody4Friend.TYPE_TEXT, friendUID, message, fingerPring, sendSucessObs); } |