【环信集成笔记】进阶篇-android环信昵称头像解决方法
当你刚刚集成环信的时候,在和自己android组的小伙伴玩的不亦乐乎的时候,当你过完这把瘾的时候,那么接下来,你就要考虑的是怎么让这个头像显示的是自己想要的头像,怎么让昵称显示自己的昵称.....
那么接下来,我来告诉大家,怎么解决昵称头像的问题,
首先,这篇文章是接在我大表哥江南孤鹜在im社区写的一篇文章之后写的,上个链接地址 Android获取昵称头像接下来,我对此文章做些补充:
我看到有些人在问,这个方法放在哪里?
好吧,大表哥没说出来,这个放在UserApiModel里面
那么接下来,大表哥写的是这样的,利用扩展消息去获取头像昵称,在这里我提醒下大家,要判断这个头像是自己的还是好友的
怎么判断呢,作为新手的我们,我推荐使用shareprefences在登陆的时候保存下自己的头像昵称,然后再这里获取,并且设置给扩展
在demohelper里面有个getuserinfo方法
这里就是把获取到的头像昵称设置给环信,然后显示出来,这里最重要,切记不要写错。
那么,到此为止,其实都说完了,可是,毕竟是一个延伸,怎么可能就此结束,接下来给大家看下,请求数据,然后设置给数据库
请求的过程我就不写了,这个大家都会,获取到username,id,logo,之后先要把头像,昵称存到userdao里面,如果userdao是环信的一个数据库,这个大家自己看看demo的代码就知道了,设置到这里,是为了在联系人列表里面显示,UserInfoCacheSvc.createOrUpdate(id,username,logo_img);这句就是把头像昵称放到大表哥写的数据库里面
最后,补充一下,忘记说了,导入框架
好了,这样就结束了,如果有什么还不明白,就加入大表哥粉丝群(环信IM互帮互助群 340452063),我会帮你解答一切问题
那么接下来,我来告诉大家,怎么解决昵称头像的问题,
首先,这篇文章是接在我大表哥江南孤鹜在im社区写的一篇文章之后写的,上个链接地址 Android获取昵称头像接下来,我对此文章做些补充:
我看到有些人在问,这个方法放在哪里?
好吧,大表哥没说出来,这个放在UserApiModel里面
那么接下来,大表哥写的是这样的,利用扩展消息去获取头像昵称,在这里我提醒下大家,要判断这个头像是自己的还是好友的
怎么判断呢,作为新手的我们,我推荐使用shareprefences在登陆的时候保存下自己的头像昵称,然后再这里获取,并且设置给扩展
在demohelper里面有个getuserinfo方法
这里就是把获取到的头像昵称设置给环信,然后显示出来,这里最重要,切记不要写错。
那么,到此为止,其实都说完了,可是,毕竟是一个延伸,怎么可能就此结束,接下来给大家看下,请求数据,然后设置给数据库
请求的过程我就不写了,这个大家都会,获取到username,id,logo,之后先要把头像,昵称存到userdao里面,如果userdao是环信的一个数据库,这个大家自己看看demo的代码就知道了,设置到这里,是为了在联系人列表里面显示,UserInfoCacheSvc.createOrUpdate(id,username,logo_img);这句就是把头像昵称放到大表哥写的数据库里面
最后,补充一下,忘记说了,导入框架
好了,这样就结束了,如果有什么还不明白,就加入大表哥粉丝群(环信IM互帮互助群 340452063),我会帮你解答一切问题
18 个评论
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
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()是空的,步骤都是跟着你和大表哥走的,是不是哪里差了什么!!