文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android实现环信修改头像和昵称

2024-04-02 19:55

关注

一、概述

最近在处理环信聊天时,需要修改聊天页面的用户昵称和头像,在网上搜索解决方案,发现没有合适,要么看不懂,要么代码太复杂,没办法,只能发挥自己的聪明才智动手解决了。
项目里的环信是基于V3.x的,项目里的聊天包括单聊和群组聊天,所以要同时兼顾这两种模式。

二、解决方法

1.首先我们在easyui库里添加两个类:

package com.hyphenate.easeui.model;



public class EaseMember {

    public String member_hxid;
    public String member_headphoto;
    public String member_nickname;
}
package com.hyphenate.easeui.utils;

import com.hyphenate.easeui.model.EaseMember;

import java.util.ArrayList;
import java.util.List;



public class EaseGlobal {

    public static List<EaseMember> memberList = new ArrayList<>();
}

2.环信自己也说了环信不保存项目的用户信息,所以这里我们需要在自己的项目里处理。
如果是一对一聊天,我们就获取好友列表(网络请求),并赋值:

List<EaseMember> memberList = new ArrayList<>();
          for(HxContact hc : contactList){
                EaseMember em = new EaseMember();
                  em.member_hxid = hc.username;
                  em.member_headphoto = Api.IMAGE_DOMAIN_URL+hc.headPhoto;
                  em.member_nickname = hc.name;
                  memberList.add(em);
                      }
                    //添加自己的头像和昵称信息
                    EaseMember em2 = new EaseMember();
                    em2.member_hxid = Global.userData.user.hxUserName;
                    em2.member_headphoto = Api.IMAGE_DOMAIN_URL+Global.userData.user.headPhoto;
                    em2.member_nickname = Global.userData.user.loginName;
                    memberList.add(em2);
                    EaseGlobal.memberList = memberList;

如果是群组聊天,我们就获取该群组的成员列表(网络请求),并赋值:

List<EaseMember> memberList = new ArrayList<>();
          for(TeamMember tm : groupMemberList){
                  EaseMember em = new EaseMember();
                    em.member_hxid = tm.chatUsername;
                    em.member_headphoto = Api.IMAGE_DOMAIN_URL+tm.headPhoto;
                    em.member_nickname = tm.mgName;
                     memberList.add(em);
             }
        //添加自己的头像和昵称信息
   EaseMember em2 = new EaseMember();
   em2.member_hxid = Global.userData.user.hxUserName;
   em2.member_headphoto = Api.IMAGE_DOMAIN_URL+Global.userData.user.headPhoto;
   em2.member_nickname = Global.userData.user.loginName;
   memberList.add(em2);
EaseGlobal.memberList = memberList;

3.最后一步,离成功一步之遥啦!找到EaseChatRow类,在setUpBaseView()方法中将

修改成:

//set nickname and avatar
        if(EaseGlobal.memberList.size()>0){
            if (message.direct() == Direct.SEND) {
                for(EaseMember em : EaseGlobal.memberList){
                    if(em.member_hxid.equals(EMClient.getInstance().getCurrentUser())){
                        Glide.with(context).load(em.member_headphoto).into(userAvatarView);
                        break;
                    }
                }
            } else {
                for(EaseMember em : EaseGlobal.memberList){
                    if(em.member_hxid.equals(message.getFrom())){
                        Glide.with(context).load(em.member_headphoto).into(userAvatarView);
                        usernickView.setText(em.member_nickname);
                        break;
                    }
                }
            }
        }else {
            if (message.direct() == Direct.SEND) {
                EaseUserUtils.setUserAvatar(context, EMClient.getInstance().getCurrentUser(), userAvatarView);
            } else {
                EaseUserUtils.setUserAvatar(context, message.getFrom(), userAvatarView);
                EaseUserUtils.setUserNick(message.getFrom(), usernickView);
            }
        }

三、总结

这种解决方法我认为非常的棒,有木有,扩张性高,对任意项目都适用,而且,不会影响原有功能!
今天的分享就到这里,感谢阅读!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯