|
我理解你的困惑了。你可以自已为每条消息生成指纹码(实际上当你不指定消息批评纹码时,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);
} |