【环信集成笔记】进阶篇-android环信昵称头像解决方法

当你刚刚集成环信的时候,在和自己android组的小伙伴玩的不亦乐乎的时候,当你过完这把瘾的时候,那么接下来,你就要考虑的是怎么让这个头像显示的是自己想要的头像,怎么让昵称显示自己的昵称.....

那么接下来,我来告诉大家,怎么解决昵称头像的问题,

首先,这篇文章是接在我大表哥江南孤鹜在im社区写的一篇文章之后写的,上个链接地址 Android获取昵称头像接下来,我对此文章做些补充:

我看到有些人在问,这个方法放在哪里?

1.png

好吧,大表哥没说出来,这个放在UserApiModel里面

那么接下来,大表哥写的是这样的,利用扩展消息去获取头像昵称,在这里我提醒下大家,要判断这个头像是自己的还是好友的
2.png

怎么判断呢,作为新手的我们,我推荐使用shareprefences在登陆的时候保存下自己的头像昵称,然后再这里获取,并且设置给扩展

3.png

在demohelper里面有个getuserinfo方法
4.png

这里就是把获取到的头像昵称设置给环信,然后显示出来,这里最重要,切记不要写错。

那么,到此为止,其实都说完了,可是,毕竟是一个延伸,怎么可能就此结束,接下来给大家看下,请求数据,然后设置给数据库

5.png

请求的过程我就不写了,这个大家都会,获取到username,id,logo,之后先要把头像,昵称存到userdao里面,如果userdao是环信的一个数据库,这个大家自己看看demo的代码就知道了,设置到这里,是为了在联系人列表里面显示,UserInfoCacheSvc.createOrUpdate(id,username,logo_img);这句就是把头像昵称放到大表哥写的数据库里面

最后,补充一下,忘记说了,导入框架
6.png

好了,这样就结束了,如果有什么还不明白,就加入大表哥粉丝群(环信IM互帮互助群 340452063),我会帮你解答一切问题

18 个评论

表弟又偷懒,发图片不发代码o(╯□╰)o
好 我这几天搞个demo
有demo没 急用哇
现在还没有
啥时候有哇,大神
月底就会出
感谢大神,大神,月末了,demo呢
恩 别急 很快就好
老司机,小视频来一发。
陈日明

陈日明 回复 Gj

视频不能播放?
Gj

Gj 回复 陈日明

厉害了world哥,龙虾。我是在等你的demo~~
请问有demo吗
今天重装系统 代码删除了 。。。我得重新写个
大表哥,提供一下demo
public static UserApiModel getById(long id){
Dao<UserApiModel, Integer> dao = SqliteHelper.getInstance().getUserDao();
Log.i("-->>", "getById: " + dao.toString());
try {
QueryBuilder<UserApiModel, Integer> builder = dao.queryBuilder();
Where<UserApiModel, Integer> where = builder.where();
Where<UserApiModel, Integer> eq = where.eq("Id", id);
UserApiModel userApiModel = eq.queryForFirst();
LogUtils.i("-->>builder:" + builder + ",where:" + where + ",eq:" + eq);
UserApiModel model = dao.queryBuilder().where().eq("Id", id).queryForFirst();
return model;
} catch (SQLException e) {
e.printStackTrace();
}

return null;
}
大神,queryForFirst()这一行报错,不知道哪里出了问题。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
id为空
你们要的demo在github上面 去直接搜索LiangKe Cloudant-crm 是我的
private void setUserInfoAttribute(EMMessage message) {
try {
message.setAttribute(SharePrefConstant.ChatUserId, PrefUtils.getUserChatId());
message.setAttribute(SharePrefConstant.ChatUserNick, PrefUtils.getUserName());
Logger.e("Wu","昵称 = "+PrefUtils.getUserName());
message.setAttribute(SharePrefConstant.ChatUserPic, "http://image.baidu.com" + PrefUtils.getUserPic()) ;//这里用是图片的完整链接地址,如果要取缩略图,需要服务端配合;
} catch (Exception e) {
e.printStackTrace();
Logger.e("Wu","用户的属性有无异常 = "+e.getMessage());
}
}



我这里面获取PrefUtils.getUserName()是空的,步骤都是跟着你和大表哥走的,是不是哪里差了什么!!

要回复文章请先登录注册

知识价值的认可,源自您的赞赏

扫描二维码,你的支付将由imGeek代收后转给对方

×