之前集成即时通讯(环信)的时候,需要用到自定义消息的功能。而在开发过程中遇到了许多的问题,之前工作比较忙,现在有时间了记录一下。
第一步:
首先,在聊天界面添加一个发送扩展消息的MenuItem:
在ChatFragment类中定义一个常量,用来ItemId。
private static final int RECORDS = 20;
在registerExtendMenuIte()方法中注册MenuItem:
inputMenu.registerExtendMenuItem("名片", R.drawable.ease_blue_add, RECORDS, extendMenuItemClickListener);
在onExtendMenuItemClick()方法中设置点击事件,发送消息:
注意:一定要设置聊天的类型,默认是单聊,如果不设置,那么在群组或者是聊天室等多人聊天时,对方是无法接收到正确消息的。
//设置消息类型,默认是单聊,如果不设置,在群聊中就收不到消息
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)
在createChatRow()方法中设置消息的类:
其中EaseChatRowRecords类,是自己定义的消息类型,继承EaseChatRow类:
到此已经完成了扩展消息的开发。