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

一、概述

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

二、解决方法

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

package com.hyphenate.easeui.model;

/**
 * author: chenzheng
 * created on: 2017/7/26 17:11
 * description:
 */

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;

/**
 * author: chenzheng
 * created on: 2017/7/26 17:04
 * description:
 */

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);
            }
        }

三、总结

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

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

(0)

相关推荐

  • android 实现APP中改变头像图片的实例代码

    具体代码如下所示: package com.example.studyapplication.fragment; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory

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

    一.概述 最近在处理环信聊天时,需要修改聊天页面的用户昵称和头像,在网上搜索解决方案,发现没有合适,要么看不懂,要么代码太复杂,没办法,只能发挥自己的聪明才智动手解决了.项目里的环信是基于V3.x的,项目里的聊天包括单聊和群组聊天,所以要同时兼顾这两种模式. 二.解决方法 1.首先我们在easyui库里添加两个类: package com.hyphenate.easeui.model; /**  * author: chenzheng  * created on: 2017/7/26 17:11

  • android-使用环信SDK开发即时通信功能(附源码下载)

    最近项目中集成即时聊天功能,挑来拣去,最终选择环信SDK来进行开发,选择环信的主要原因是接口方便.简洁,说明文档清晰易懂.文档有Android.iOS.和后台服务器端,还是非常全的. 环信官网:http://www.easemob.com/ 本篇文章目的主要在于说明环信Demo如何实现即时通信的.我在集成环信SDK到我们自己开发的app之前,研究了一下环信demo的代码,看了两三天的样子,基本搞清楚来龙去脉,但是只是清楚来龙去脉,要说到里面的细节可能得深一步研究,但是这就够了,已经可以把demo

  • Android实现短信验证码获取自动填写功能(详细版)

    现在的应用在注册登录或者修改密码中都用到了短信验证码,那在android中是如何实现获取短信验证码并自动填写的呢? 首先,需要要在manifest中注册接收和读取短信的权限: <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> <uses-permission android:name="android.permission.READ_

  • Android实现短信验证功能的代码

    在我们现在开发APP过程中,当用户注册时,短信验证是必不可少的操作,这里我们就是用一个免费的第三方短信验证SDK-MOP 首先看下效果图 获取AppKey和AppSecret 首先进入官网,登录(没有帐号的自己去注册一个).鼠标移动到右侧头像处,点击进入后台. 官网首页 选择SecurityCodeSDK. 选择短信SDK 进入后台页面后,点击添加按钮.填写应用名称(这个可以随便写).选择Android后,点击添加即可. 添加应用 添加成功后,就会进入以下界面,在这里就可以看到刚刚申请成功的Ap

  • Android实现短信验证功能

    本文实例为大家分享了Android实现短信验证功能的具体代码,供大家参考,具体内容如下 目标效果:   点金绑定手机号,输入手机号点击下一步,会收到一条验证码,验证码输入正确则提示验证成功,如果已经验证成功再次验证时,提示已经验证. 1.进入mob.com,注册账号,然后进入控制台,点击中间进入短信验证区. 2.点击左上角创建应用. 3.创建成功会显示应用的密钥,在初始化SDK中使用. 4.然后下载SDK. 5.下载后解压,SMSSDK文件夹中有如图两个项目,打开eclipse以Android项

  • 关于Android发送短信获取送达报告的问题(推荐)

    最近公司开发一个项目,要求app能够发送短信并获取送达报告.这本不是一个什么难题,实现这一功能的代码一搜一大把,那么这么简单的一个问题,为什么我要在这里提出来呢?那是因为我在写代码的时候掉入了一个坑,而且这很可能发生在很多和我一样粗心的朋友身上.先给大家分享一下当初让我掉进坑里的代码: 咋一看,好像这段代码并没有什么问题,但是在测试的时候发现无论发送多少条短信,每次都只能获取第一条短息的送达报告!!这个问题当时困扰了我很久,感觉自己明明没有写错啊,为什么会出现这样莫名其妙的问题呢?思索无果之后,

  • Android获取短信验证码的实现方法

    先给大家展示下效果图,如果感觉不错,请参考实现思路详解 Android开发中关于短息验证码的设计层出不穷,越来越多的应用为了更好的提高软件的安全性,开始使用通过服务器向用户发送验证码的方式,来保护用户个人信息的安全性.无论是用户注册时的信息验证还是当用户发出找回密码请求时的短信验证,他们的工作原理大致上是一致的,因为项目的需要研究了一下关于这方面的知识,本篇我将带领大家一起实现这一当下流行的设计方案. 众所周知,短信验证需要服务器端生成一个验证码,然后发送到用户输入的手机上,这个过程需要服务器主

  • android 默认时间格式修改方法

    在android使用中,遇到修改默认时间格式时,总是束手无策,本文将以此问题提供解决方案,需要了解的朋友可以参考下 语言为英语时,默认的时间格式为mm/DD/yyyy,请问怎么将默认时间格式修改为:DD/mm/yyyy,不知道是在framework层给初始化的还是编译的时候给的初始值,哪位大侠知道怎么该? 1.修改文件alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml 增加代码<string name=&quo

  • 实例详解Android 获取短信会话列表

    Android中的短信并没有正式的content provider可用,在官方文档中没有提供定义.不过依然可以自己定义好URI,然后查询出短信内容.例如conetent://sms则是所有短信所在的path. 要将短信按会话分类,原先我是查询出所有短信后,然后再按照thread_id分类.系统自带的短信程序包含一个会话显示界面,每个条目包含:联系人.短信数量.第一条短信等内容.当我的程序处理的短信较多时,一次查询出所有的短信就变得很慢.(如果再加上为每个会话查询联系人信息,则会更慢) 看了系统短

  • Android发送短信功能代码

    本文实例讲述了Android发送短信功能代码,是进行Android程序开发中非常常见的重要功能.分享给大家供大家参考之用.具体方法如下: // 发送短信 public void sendMsg(){ String content = edtSend.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divideMessag

随机推荐