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