比较简单的解决android 3.2.2 昵称和头像的问题
我这个方法我自己正在使用,能比较简单的解决
如果没有DemoHeler类,那么就在下面这个方法处理:
解释一下,UserInfoForEM 是我自己的环信用户表实体类,如果userInfoForEM=null,聊天昵称就会显示注册环信的id。
好了,完了,是不是很简单,根本不要考虑什么服务器获取,也不用考虑什么附加字段,也不会去考虑非得收到一条信息才能显示。要说明一下我这是基于官方SDK3.2.2版本以及官方demo基础上弄的, 希望对大家有帮助!
- 第一步:本地新建一张环信用户表,字段有id(app本地的userId)、昵称、头像url,至于用什么数据库自己决定;
- 第二步:写上环信用户表的query、insert和update操作;
- 第三步:在EMClient.getInstance().login()的onSuccess()方法内使用insert插入自己的userId、昵称和头像url数据到数据表去,当然,如果已经插入过就update,要始终保持数据是最新的,因为你自己的可能会改变昵称和头像;
- 第四步:在进入环信的 ChatActivity.class 之前跟第三步一样保存你要聊天的对象的userId、昵称和头像url,同样的也是每次都要保存一下,防止聊天对象的昵称和头像不是最新的;
- 第五步:如果基于官方demo的 在DemoHeler.class的getUseriInfo()方法里改为如下:
private EaseUser getUserInfo(String username) {
EaseUser user = null;
UserInfoForEM userInfoForEM = DBUtil.findUserInfoForEM(username);
if (null != userInfoForEM) {
user = new EaseUser(username);
user.setAvatar(userInfoForEM.getUserHeadPhoto());
user.setNick(userInfoForEM.getNickName());
}
return user;
}
如果没有DemoHeler类,那么就在下面这个方法处理:
EaseUI.getInstance().setUserProfileProvider(new EaseUI.EaseUserProfileProvider() {
@Override
public EaseUser getUser(String username) {
EaseUser user = null;
UserInfoForEM userInfoForEM = DBUtil.findUserInfoForEM(username);
if (null != userInfoForEM) {
user = new EaseUser(username);
user.setAvatar(userInfoForEM.getUserHeadPhoto());
user.setNick(userInfoForEM.getNickName());
}
return user;
}
});
解释一下,UserInfoForEM 是我自己的环信用户表实体类,如果userInfoForEM=null,聊天昵称就会显示注册环信的id。
好了,完了,是不是很简单,根本不要考虑什么服务器获取,也不用考虑什么附加字段,也不会去考虑非得收到一条信息才能显示。要说明一下我这是基于官方SDK3.2.2版本以及官方demo基础上弄的, 希望对大家有帮助!