Android實(shí)現(xiàn)環(huán)信修改頭像和昵稱
一、概述
最近在處理環(huán)信聊天時(shí),需要修改聊天頁面的用戶昵稱和頭像,在網(wǎng)上搜索解決方案,發(fā)現(xiàn)沒有合適,要么看不懂,要么代碼太復(fù)雜,沒辦法,只能發(fā)揮自己的聰明才智動手解決了。
項(xiàng)目里的環(huán)信是基于V3.x的,項(xiàng)目里的聊天包括單聊和群組聊天,所以要同時(shí)兼顧這兩種模式。
二、解決方法
1.首先我們在easyui庫里添加兩個(gè)類:
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.環(huán)信自己也說了環(huán)信不保存項(xiàng)目的用戶信息,所以這里我們需要在自己的項(xiàng)目里處理。
如果是一對一聊天,我們就獲取好友列表(網(wǎng)絡(luò)請求),并賦值:
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;如果是群組聊天,我們就獲取該群組的成員列表(網(wǎng)絡(luò)請求),并賦值:
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);
? ? ? ? ? ? }
? ? ? ? }三、總結(jié)
這種解決方法我認(rèn)為非常的棒,有木有,擴(kuò)張性高,對任意項(xiàng)目都適用,而且,不會影響原有功能!
今天的分享就到這里,感謝閱讀!
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android 對話框彈出位置和透明度的設(shè)置具體實(shí)現(xiàn)方法
在android中我們經(jīng)常會用AlertDialog來顯示對話框。通過這個(gè)對話框是顯示在屏幕中心的。但在某些程序中,要求對話框可以顯示在不同的位置。2013-07-07
Android Intent實(shí)現(xiàn)頁面跳轉(zhuǎn)的兩種方法
這篇文章主要介紹了Android Intent實(shí)現(xiàn)頁面跳轉(zhuǎn)的兩種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android?Studio實(shí)現(xiàn)購買售賣系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)購買售賣系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Android自定義實(shí)現(xiàn)轉(zhuǎn)盤菜單
旋轉(zhuǎn)菜單是一種占用空間較大,實(shí)用性稍弱的UI,本文主要為大家詳細(xì)介紹了Android如何自定義實(shí)現(xiàn)轉(zhuǎn)盤菜單,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2023-12-12
Android利用Theme自定義Activity間的切換動畫
這篇文章主要為大家詳細(xì)介紹了Android利用Theme自定義Activity間的切換動畫,感興趣的小伙伴們可以參考一下2016-09-09
Android10填坑適配指南(實(shí)際經(jīng)驗(yàn)代碼)
這篇文章主要介紹了Android10填坑適配指南(實(shí)際經(jīng)驗(yàn)代碼),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Flutter的鍵值存儲數(shù)據(jù)庫使用示例詳解
這篇文章主要為大家介紹了Flutter的鍵值存儲數(shù)據(jù)庫使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Android掃描二維碼時(shí)出現(xiàn)用戶禁止權(quán)限報(bào)錯(cuò)問題解決辦法
這篇文章主要介紹了Android掃描二維碼時(shí)出現(xiàn)用戶禁止權(quán)限報(bào)錯(cuò)問題解決辦法的相關(guān)資料,需要的朋友可以參考下2017-06-06

