Android 环信扩展消息(自定义消息)

之前集成即时通讯(环信)的时候,需要用到自定义消息的功能。而在开发过程中遇到了许多的问题,之前工作比较忙,现在有时间了记录一下。

第一步:

首先,在聊天界面添加一个发送扩展消息的MenuItem:

ChatFragment类中定义一个常量,用来ItemId。

private static final int RECORDS = 20;

registerExtendMenuIte()方法中注册MenuItem:

inputMenu.registerExtendMenuItem("名片", R.drawable.ease_blue_add, RECORDS, extendMenuItemClickListener);

Android 环信扩展消息(自定义消息)_第1张图片

在onExtendMenuItemClick()方法中设置点击事件,发送消息:

Android 环信扩展消息(自定义消息)_第2张图片

注意:一定要设置聊天的类型,默认是单聊,如果不设置,那么在群组或者是聊天室等多人聊天时,对方是无法接收到正确消息的。

//设置消息类型,默认是单聊,如果不设置,在群聊中就收不到消息
if (chatType == EaseConstant.CHATTYPE_GROUP) {
    message.setChatType(EMMessage.ChatType.GroupChat);
} else if (chatType == EaseConstant.CHATTYPE_CHATROOM) {
    message.setChatType(EMMessage.ChatType.ChatRoom);
}

第二步:

在easeui库中找的EaseMessageAdapter类(这个是消息适配器)。

定义两个常量,用于表示消息类型(注意:扩展一种消息类型,需要定义两个常量:接收+发送):

private static final int MESSAGE_TYPE_SENT_RECORDS = 14;
private static final int MESSAGE_TYPE_RECV_RECORDS = 15;

getViewTypeCount()修改返回的消息类型:+2(每扩展一种消息类型,返回的数值+2)

Android 环信扩展消息(自定义消息)_第3张图片

在getItemViewType()方法中设置返回的消息类型,并+2:



在createChatRow()方法中设置消息的类:

Android 环信扩展消息(自定义消息)_第4张图片

其中EaseChatRowRecords类,是自己定义的消息类型,继承EaseChatRow类:

Android 环信扩展消息(自定义消息)_第5张图片

到此已经完成了扩展消息的开发。

你可能感兴趣的:(Android,即时通讯)