使用环境:

2018年集成的腾讯IM云通信,使用的是随心聊类似的集成方式。

2019年集成的时候,官方推荐TUIKIT依赖module

github官方demo : https://github.com/tencentyun/TIMSDK

本人集成的是腾讯IM通信的TUIKIT 4.2.9,也就是从这个版本开始有了头像更改的API类:TIMFriendshipManager。

声明:

因TUIKIT腾讯IM依赖包暂时未提供实时更新头像的方法,此功能在四月初会上线

届时的修改文档是:

https://cloud.tencent.com/document/product/269/33926

文档中的修改方法仅仅是提供理论,而实际上需要你自己去获取到数据以后变通着去显示。

1  通过TIMFriendshipManager设置你的个人信息:

在onSuccess方法中注释掉的方法是用来查看设置是否成功的。

public void setFaceMethod(String name,String img) {HashMap<String, Object> profileMap = new HashMap<>();profileMap.put(TIMFriendshipManager.TIM_PROFILE_TYPE_KEY_NICK, name);profileMap.put(TIMFriendshipManager.TIM_PROFILE_TYPE_KEY_GENDER, TIMFriendGenderType.Male.value());profileMap.put(TIMFriendshipManager.TIM_PROFILE_TYPE_KEY_FACEURL,BASE_RES_HEAD_URL + img);TIMFriendshipManager.getInstance().modifySelfProfile(profileMap, new TIMCallBack() {@Overridepublic void onError(int code, String desc) {LogUtil.e( code + "设置失败" + desc);}@Overridepublic void onSuccess() {LogUtil.e("设置成功");//                TIMFriendshipManager.getInstance().getSelfProfile(new TIMValueCallBack<TIMUserProfile>() {//                    @Override//                    public void onError(int i, String s) {////                    }////                    @Override//                    public void onSuccess(TIMUserProfile timUserProfile) {//                        LogUtil.e("昵称-->"+ timUserProfile.getNickName());//                        LogUtil.e("头像-->"+ timUserProfile.getFaceUrl());//                    }//                });}});}

2 设置成功以后,给聊天列表赋值,这里拿群聊举例说明:

更新头像的方法:

至于GlideUtil就是一个普通的Glide用法,不懂的请自行百度……

    public void setChatIconImg(String loginUser, final ImageView headImg, final TextView nickName){List<String> users = new ArrayList<>();users.add(loginUser);TIMFriendshipManager.getInstance().getUsersProfile(users, true, new TIMValueCallBack<List<TIMUserProfile>>(){@Overridepublic void onError(int code, String desc){LogUtil.e(code + " 获取失败 " + desc);}@Overridepublic void onSuccess(List<TIMUserProfile> result){for(TIMUserProfile res : result){GlideUtil.setUriMethod(context,res.getFaceUrl(),headImg);nickName.setText(res.getNickName());}}});}

chatAdapter中,对于群聊头像、昵称的判断设置方法是

  if (msg.isSelf()) {setChatIconImg(msg.getFromUser(),chatHolder.userIcon,chatHolder.userName);} else {setChatIconImg(msg.getFromUser(),chatHolder.userIcon,chatHolder.userName);}

这样,顺带着聊天的昵称也做了更换。

有两个问题

1 Glide的上下文Context获取

需要从任何调用ChatAdapter的地方获取到,

常用获取方法是创建有参构造方法:

 private Context context;public ChatAdapter(Context context){this.context = context;}

2  Glide加载图片仅限于ImageView控件,而聊天的头像是继承了RelativeLayout的ChatIconView

所以需要在显示了ChatIcomView的八个xml文件里,替换掉他们!

唯有这样,才可以在不依靠腾讯IM技术支持的情况下完成头像的更改

 <ImageViewandroid:id="@+id/iv_user_icon"android:layout_width="50dp"android:layout_height="50dp"android:layout_gravity="top"android:src="@drawable/default_user_icon"/><!--<com.tencent.qcloud.uikit.business.chat.view.ChatIconView--><!--android:id="@+id/iv_user_icon"--><!--android:layout_width="50dp"--><!--android:layout_height="50dp"--><!--android:layout_gravity="top"--><!--app:default_image="@drawable/default_user_icon"--><!--app:image_radius="10dp" />-->

最后的问题:

为了Glide加载图片把ChatIconView替换成了ImageView,

而ChatIconView有一个方法:

   public void invokeInformation(MessageInfo messageInfo) {mIconView.load();if (mDynamicView != null)mDynamicView.parseInformation(messageInfo);}

在ChatAdapter中被调用了一次,

我把它注释掉了,目前暂时没有看到什么后果……有的时候再说吧。

经确认,注释掉的方法不会影响到聊天

有任何需要讨论的问题请联系

QQ: 88627109

欢迎您的到来

android 集成腾讯IMSDK4.2.9 TUIKIT即时通信之更改头像相关推荐

  1. Android集成腾讯X5浏览器内核库

    Android集成腾讯X5浏览器内核库 一.相关配置 1. 相关地址 2.引入SDK 3. AndroidManifest配置 二.Application中初始化内核 三.代码实现 1. 自定义带Pr ...

  2. android腾讯互联demo,Android集成腾讯小直播Demo,multidex问题

    在集成腾讯官方的小直播源码中发现的问题 首先是android studio编译中中gradle不能下载gson等文件,需要用jcenter()把原来的maven注掉,或者在ProjectStructu ...

  3. Android集成腾讯直播(无需后台配合一小时让你拥有直播APP)

    直播互动的功能,最终选择了腾讯云平台进行开发,LiveRoom组件里面包含了(直播,连麦,弹幕,私信等)功能,我们需要的是推流,拉流都交个腾讯云来处理,腾讯云这方面功能也是比较齐全的了(粗略大概2分钟 ...

  4. android 集成腾讯定位,Android集成腾讯云通信IM

    本篇文章结构 一.集成流程. 二.集成中遇到的问题 集成过程 TIM图片20180425151417.png 很清楚,前几部没什么说的,去官网注册账号就好了,我们接下来看账号集成. 首先第一步是集成模 ...

  5. Android集成腾讯信鸽推送SDK

    推送是每个应用中常见的功能今天使用一下腾讯的信鸽推送听说信鸽推送保活率比较高~ 第一步先去官网注册账号https://xg.qq.com/推荐使用QQ直接登陆,进去之后点击"新建应用&quo ...

  6. android 集成腾讯地图定位

    本文只教学定位功能,需要搜索.2D或3D地图的可以到腾讯地图开发平台看api文档,链接:腾讯地图 一.到腾讯地图开发平下载定位sdk,快速入口:腾讯地图定位 二.在项目的AndroidManiFest ...

  7. c 语言自动登录2016qq,快速集成腾讯云通讯IMSDK 注册登录功能

    云通讯简介 腾讯是国内最大也是最早的即时通信开发商,QQ和微信已经成为每个互联网用户必不可少的应用.现在,腾讯将高并发.高可靠的即时通信能力进行开放,开发者可以很容易的根据腾讯提供的SDK将即时通信功 ...

  8. Android 项目集成腾讯X5浏览器内核

    1.为什么要集成腾讯 X5 浏览器内核 肯定是事出有因,简单来说,JS代码写的不标准,与部分机型内嵌套的浏览器内核产生矛盾,出现底层(os)bug导致,不得不费事搞一个其它内核进行加载网页,具体原因. ...

  9. Android 腾讯TUIKIT IM即时通信聊天界面语音问题备忘

    使用环境: 集成腾讯TUIKIT IMSDK版本4.2.2 聊天界面语音发送 问题描述: 语音发送按钮 点击时弹出语音录制动画弹窗 稍微移动手指,但未超过100像素,非取消发送语音状态,可以发送语音 ...

最新文章

  1. 「Excel技巧」Excel技巧之如何看文件里的宏?
  2. 【呆鸟译Py】20个数据分析前必须搞清楚的问题
  3. 位置相关属性offset(),position(),scrollTop()等
  4. es java_JAVA API操作ES详解
  5. Spring Boot 2.x基础教程:使用JTA实现分布式事务
  6. crm使用soap创建下拉框
  7. php远程下载头像,远程使用gravatar头像
  8. JFinal model简单包装,版本2
  9. tomcat(14)服务器组件和服务组件
  10. 牛客21297 手机号码
  11. ZZULIOJ 1132: 数字字符统计
  12. [MySQL Reference Manual] 24 MySQL sys框架
  13. bzoj1034 [ZJOI2008]泡泡堂BNB 结论
  14. mysql复制部署_MYSQL-主从复制部署
  15. go 批量删除文件内字符串_leetcode1047_go_删除字符串中的所有相邻重复项
  16. 四川大学mac用户登陆锐捷校园网指南
  17. 计算机d盘无法格式化,d盘无法格式化,教您解决D盘无法格式化的方法
  18. JAVA计算机毕业设计劳务外包管理系统(附源码、数据库)
  19. 【高数】高数第八章节——向量代数与空间解析几何空间直角坐标系
  20. Codeforces 1419B. Stairs 递归

热门文章

  1. X站全称是什么_工作中学习 | 没有校惯导之前为什么PFD不显示飞机姿态,而IFSD却能显示...
  2. 两个主要问题将决定微信支付成败
  3. MII、GMII、RMII、RGMII、SGMII、XGMII
  4. 中文分词软件包的使用
  5. 进程注入之DLL注入
  6. oracle java.sql.SQLException: ORA-00911: 无效字符和ORA-01017: invalid username/password; logon denied
  7. 分类:支持向量机(四)——非线性支持向量机
  8. 背包问题——01背包
  9. 如何使用Chrome浏览器,打包生成自己的插件(crx格式文件)?
  10. pycharm解决光标变粗,关闭改写模式