1. 程式人生 > >Android 環信擴充套件訊息(自定義訊息)

Android 環信擴充套件訊息(自定義訊息)

之前整合即時通訊(環信)的時候,需要用到自定義訊息的功能。而在開發過程中遇到了許多的問題,之前工作比較忙,現在有時間了記錄一下。

第一步:

首先,在聊天介面新增一個傳送擴充套件訊息的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)


在getItemViewType()方法中設定返回的訊息型別,並+2:



在createChatRow()方法中設定訊息的類:


其中EaseChatRowRecords類,是自己定義的訊息型別,繼承EaseChatRow類:


到此已經完成了擴充套件訊息的開發。