参考环信官方文档 : http://docs.easemob.com/start/200androidcleintintegration/100customizedextension
官方参考社区文档 : http://www.imgeek.org/search/q-6Ieq5a6a5LmJ5omp5bGV5raI5oGv#all
参考个人社区 名片集成 : http://www.imgeek.org/article/825307924
个人使用的是环信2.0 以下名片集成是环信 3.0 不过对应参考着设计是没问题的
2.0情况下:
1. 主要是修改ChatActivity.java相关联的listview的MessageAdapter.java中的以下方法:
getItem(int)
getItemId(int)
getViewTypeCount()
getItemViewType(int)
getView(int, View, ViewGroup)
修改完这两步基本就可以实现了自定义扩展功能了,而环信官方给出的demo中,语音通话、视频通话就是通过自定义Type.TXT方式实现的。具体可以参考这两个功能怎么实现发送展示item。
下面给出环信参考3.0的修改方法(转载自文章开头社区 名片集成 案例 ----- 个人社区 名片集成 : http://www.imgeek.org/article/825307924):
android扩展消息(名片集成)
很多社交软件都少不了名片这种东西,可是,用环信怎么去解决这个名片问题呢。
首先呢,大家要注意环信IOS版的扩展消息ext不能接收json格式数据。。。(之前不知道,ios把我坑了一次)
接下来,我就给大家来集成下名片消息
要想在ios端显示出来,那么必须两个客户端的扩展字段必须相同,这个大家一定要知道
我的扩展字段是这样的,上面也解释的很清楚,大家不要看错,是名片上的,不是自己的id,昵称
接下来我们要去定义几个常量在chatFragment里面
定义好之后,那么接下来我们需要到chatFragment里面去注册这个按钮
对,没错,就是这么简单,注册一个按钮,然后,我们需要到onExtendMenuItemClick这个方法中写名片按钮的点击事件
大家看到了是个startActivityForResult,看到这里,肯定接下来就是去到REQUEST_CODE_SELEST_MINGPIAN里面接收data
REQUEST_CODE_SELEST_MINGPIAN是写在if(resultCode == Activity.RESULT_OK) {}里面的
接下来我们需要去CustomChatRowProvider这个内部类里面去设置发送接收,大家需要注意getCustomChatRowTypeCount(){}方法里面必须要加上2,这个2的意思就是说发送和接收名片
这里大家应该可以看到,我只写了发送名片,没有写接收名片,原因就是我不需要自己点自己发送出去的名片,所以没写,这个如果要的话,照葫芦画瓢,SoEasy
接下来这个非常重要,这个是名片消息的ChatRow,就是载体
对,就是new一个chatRow出来,这个chatRow在easeui里面是没有的,所以需要我们自己写
必须注意,一定要继承EaseChatRow,不然就调不出onInflatView,onFindViewById,onUpdateView,onSetUpView,onBubbleClick这几个方法
这个方法名已经很明显了onFindViewById,也就是说,在这里绑定布局里面的id,最重要的方法是onSetUpView
这里设置完了之后,基本上就好了,布局我没有放出来,等会看运行之后的效果
这几个方法的意思大家去看EaseUI里面的EaseChatRow
到最后,我们还需要一个步骤,就是去DemoHelper里面监听消息是不是名片扩展消息
是不是很好理解,这个完了之后,运行。。。。
完美!!!
如果大家还有什么问题,那么就加入环信IM互帮互助群 340452063认准杭州-android-中草,龙瞎头像,找我,帮你解答一切扩展消息问题
首先呢,大家要注意环信IOS版的扩展消息ext不能接收json格式数据。。。(之前不知道,ios把我坑了一次)
接下来,我就给大家来集成下名片消息
要想在ios端显示出来,那么必须两个客户端的扩展字段必须相同,这个大家一定要知道
我的扩展字段是这样的,上面也解释的很清楚,大家不要看错,是名片上的,不是自己的id,昵称
接下来我们要去定义几个常量在chatFragment里面
定义好之后,那么接下来我们需要到chatFragment里面去注册这个按钮
对,没错,就是这么简单,注册一个按钮,然后,我们需要到onExtendMenuItemClick这个方法中写名片按钮的点击事件
大家看到了是个startActivityForResult,看到这里,肯定接下来就是去到REQUEST_CODE_SELEST_MINGPIAN里面接收data
REQUEST_CODE_SELEST_MINGPIAN是写在if(resultCode == Activity.RESULT_OK) {}里面的
接下来我们需要去CustomChatRowProvider这个内部类里面去设置发送接收,大家需要注意getCustomChatRowTypeCount(){}方法里面必须要加上2,这个2的意思就是说发送和接收名片
这里大家应该可以看到,我只写了发送名片,没有写接收名片,原因就是我不需要自己点自己发送出去的名片,所以没写,这个如果要的话,照葫芦画瓢,SoEasy
接下来这个非常重要,这个是名片消息的ChatRow,就是载体
对,就是new一个chatRow出来,这个chatRow在easeui里面是没有的,所以需要我们自己写
必须注意,一定要继承EaseChatRow,不然就调不出onInflatView,onFindViewById,onUpdateView,onSetUpView,onBubbleClick这几个方法
这个方法名已经很明显了onFindViewById,也就是说,在这里绑定布局里面的id,最重要的方法是onSetUpView
这里设置完了之后,基本上就好了,布局我没有放出来,等会看运行之后的效果
这几个方法的意思大家去看EaseUI里面的EaseChatRow
到最后,我们还需要一个步骤,就是去DemoHelper里面监听消息是不是名片扩展消息
是不是很好理解,这个完了之后,运行。。。。
完美!!!
如果大家还有什么问题,那么就加入环信IM互帮互助群 340452063认准杭州-android-中草,龙瞎头像,找我,帮你解答一切扩展消息问题