本文以环信即时通讯2.2.5与环信3.3.6为例
官方文档SDK2.X至3.X升级指南中提到的方法在这里就不重复了。
1.获取当前会话
2.X:EMChatManager.getInstance().getConversation(mEmPhone);
3.X:EMClient.getInstance().chatManager().getConversation(mEmPhone, EMConversation.EMConversationType.Chat,true);
ps:3.X中也有2.X获取会话的方法,但是直接使用会报空指针异常
2.图片下载回调
2.X:给未下载成功的方法设置下载回调,下载成功后显示图片
if ((message.direct == EMMessage.Direct.RECEIVE && message.status != EMMessage.Status.SUCCESS))
{
((ImageMessageBody) message.getBody()).setDownloadCallback(new EMCallBack()
{
@Override
public void onSuccess()
{
new LoadImageTask().execute(thumbernailPath, localFullSizePath, remote, message.getChatType(), iv, (Activity) mContext, message, mEmphone);
}
@Override
public void onError(int i, String s)
{
}
@Override
public void onProgress(int i, String s)
{
}
});
}
3.X:在设置监听消息的回调中有onMessageChanged方法,当消息状态发送改变,可以实时刷新聊天界面。
messageListener = new EMMessageListener() {
private BroadcastReceiver broadCastReceiver = null;
@Override
public void onMessageReceived(List<EMMessage> messages) {
}
@Override
public void onCmdMessageReceived(List<EMMessage> messages) {
}
@Override
public void onMessageRead(List<EMMessage> messages) {
}
@Override
public void onMessageDelivered(List<EMMessage> message) {
}
@Override
public void onMessageRecalled(List<EMMessage> messages) {
}
@Override
public void onMessageChanged(EMMessage message, Object change) {
EventBus.getDefault().post(MESSAGE_STATUS_CHANGE);
}
};
EMClient.getInstance().chatManager().addMessageListener(messageListener);