日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

环信ease-sdk-3.3.4_r1 集成用户头像 昵称功能的简单处理方法

發布時間:2025/4/5 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 环信ease-sdk-3.3.4_r1 集成用户头像 昵称功能的简单处理方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環信服務器并不保存用戶的頭像用戶名,但實際開發需要設置用戶昵稱頭像。下面提供一個簡單的辦法設置用戶的頭像昵稱,這里的頭像昵稱從自己的服務器獲取的并且保存到本地。

1.服務端的設計
服務端設計比較簡單,提供個接口,用戶傳入自己的環信ID(用戶名)得到相關的用戶列表信息,其中包含用戶頭像昵稱還有其他一些你需要的信息

2.手機端的實現
找了半天找到環信設置用戶頭像的方法在DemoHelper這個類中,直接貼代碼吧

/*** Global listener* If this event already handled by an activity, you don't need handle it again* activityList.size() <= 0 means all activities already in background or not in Activity Stack*/protected void registerMessageListener() {messageListener = new EMMessageListener() {private BroadcastReceiver broadCastReceiver = null;@Overridepublic void onMessageReceived(List<EMMessage> messages) {for (EMMessage message : messages) {EMLog.d(TAG, "onMessageReceived id : " + message.getMsgId());String hxIdFrom=message.getFrom();if(SQUser.init().getUserGropMemData(appContext)!=null){groupMemList.clear();groupMemList = SQUser.init().getUserGropMemData(appContext).getRData();Log.d("這里的信息獲取到額", ""+groupMemList.size());}for (int i = 0; i <groupMemList.size() ; i++) {//接收并處理擴展消息if(message.getUserName().equals(groupMemList.get(i).getHx_user_name())){userName=groupMemList.get(i).getUser_name()+groupMemList.get(i).getDuty();userPic="http://img5.duitang.com/uploads/item/201508/30/20150830132007_TjANX.thumb.224_0.jpeg";}}System.out.println("helper接收到的用戶名:"+userName+"helper接收到的id:"+"helper頭像:"+userPic);EaseUser easeUser=new EaseUser(hxIdFrom);//設置用戶頭像easeUser.setAvatar(userPic);//設置用戶昵稱easeUser.setNick(userName);//存入內存getContactList();contactList.put(hxIdFrom,easeUser);//存入dbUserDao dao=new UserDao(appContext);List<EaseUser> users=new ArrayList<EaseUser>();users.add(easeUser);dao.saveContactList(users);// in background, do not refresh UI, notify it in notification barif(!easeUI.hasForegroundActivies()){getNotifier().onNewMsg(message);}}}@Overridepublic void onCmdMessageReceived(List<EMMessage> messages) {for (EMMessage message : messages) {EMLog.d(TAG, "receive command message");//get message bodyEMCmdMessageBody cmdMsgBody = (EMCmdMessageBody) message.getBody();final String action = cmdMsgBody.action();//獲取自定義action//red packet code : 處理紅包回執透傳消息if(!easeUI.hasForegroundActivies()){if (action.equals(RPConstant.REFRESH_GROUP_RED_PACKET_ACTION)){RedPacketUtil.receiveRedPacketAckMessage(message);broadcastManager.sendBroadcast(new Intent(RPConstant.REFRESH_GROUP_RED_PACKET_ACTION));}}if (action.equals("__Call_ReqP2P_ConferencePattern")) {String title = message.getStringAttribute("em_apns_ext", "conference call");Toast.makeText(appContext, title, Toast.LENGTH_LONG).show();}//end of red packet code//獲取擴展屬性 此處省略//maybe you need get extension of your message//message.getStringAttribute("");EMLog.d(TAG, String.format("Command:action:%s,message:%s", action,message.toString()));}}@Overridepublic void onMessageRead(List<EMMessage> messages) {}@Overridepublic void onMessageDelivered(List<EMMessage> message) {}@Overridepublic void onMessageRecalled(List<EMMessage> messages) {for (EMMessage msg : messages) {if(msg.getChatType() == ChatType.GroupChat && EaseAtMessageHelper.get().isAtMeMsg(msg)){EaseAtMessageHelper.get().removeAtMeGroup(msg.getTo());}EMMessage msgNotification = EMMessage.createReceiveMessage(Type.TXT);EMTextMessageBody txtBody = new EMTextMessageBody(String.format(appContext.getString(R.string.msg_recall_by_user), msg.getFrom()));msgNotification.addBody(txtBody);msgNotification.setFrom(msg.getFrom());msgNotification.setTo(msg.getTo());msgNotification.setUnread(false);msgNotification.setMsgTime(msg.getMsgTime());msgNotification.setLocalTime(msg.getMsgTime());msgNotification.setChatType(msg.getChatType());msgNotification.setAttribute(Constant.MESSAGE_TYPE_RECALL, true);EMClient.getInstance().chatManager().saveMessage(msgNotification);}}@Overridepublic void onMessageChanged(EMMessage message, Object change) {EMLog.d(TAG, "change:");EMLog.d(TAG, "change:" + change);}};EMClient.getInstance().chatManager().addMessageListener(messageListener);}

如上,這里的onMessageReceived(List messages)
是全局的消息監聽,這兒收到消息后去對比從我們服務器請求的用戶數據并且設置相應的頭像用戶名到數據庫中。自己的服務器的數據我做了本地緩存.用到的時候取出即可。只要改如下方法即可

@Overridepublic void onMessageReceived(List<EMMessage> messages) {for (EMMessage message : messages) {EMLog.d(TAG, "onMessageReceived id : " + message.getMsgId());String hxIdFrom=message.getFrom();if(SQUser.init().getUserGropMemData(appContext)!=null){groupMemList.clear();groupMemList = SQUser.init().getUserGropMemData(appContext).getRData();Log.d("這里的信息獲取到額", ""+groupMemList.size());}for (int i = 0; i <groupMemList.size() ; i++) {//接收并處理擴展消息if(message.getUserName().equals(groupMemList.get(i).getHx_user_name())){userName=groupMemList.get(i).getUser_name()+groupMemList.get(i).getDuty();userPic="http://img5.duitang.com/uploads/item/201508/30/20150830132007_TjANX.thumb.224_0.jpeg";}}System.out.println("helper接收到的用戶名:"+userName+"helper接收到的id:"+"helper頭像:"+userPic);EaseUser easeUser=new EaseUser(hxIdFrom);easeUser.setAvatar(userPic);easeUser.setNick(userName);//存入內存getContactList();contactList.put(hxIdFrom,easeUser);//存入dbUserDao dao=new UserDao(appContext);List<EaseUser> users=new ArrayList<EaseUser>();users.add(easeUser);dao.saveContactList(users);// in background, do not refresh UI, notify it in notification barif(!easeUI.hasForegroundActivies()){getNotifier().onNewMsg(message);}}}

至此可以顯示別人的昵稱頭像了。。。那么自己的該咋辦。。。

好的研究了半天,可以在這設置,EaseUserUtils找到這個方法

/*** set user avatar** @param username*/public static void setUserAvatar(Context context, String username, ImageView imageView) {EaseUser user = getUserInfo(username);Log.d("這里的用戶名", username);if (user != null && user.getAvatar() != null) {try {int avatarResId = Integer.parseInt(user.getAvatar());Glide.with(context).load(avatarResId).into(imageView);} catch (Exception e) {//use default avatarGlide.with(context).load(user.getAvatar()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);}} else {Glide.with(context).load(head).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);}}

在這個類里面新增個方法,設置當前用戶的頭像昵稱

private static String hxUserName = "";private static String userName = "";private static String head = "";/** 設置我的用戶名 我的頭像* @param hxUserName 當前用的環信用戶名* @param userName 將要設置的用戶名* @param head 將要設置的用戶頭像地址* */public static void setMyUserInfo(String hxName, String myUserName, String headImg) {userName = myUserName;hxUserName = hxName;head = headImg;}

setUserAvatar(Context context, String username, ImageView imageView)
中的else中設置頭像昵稱

Glide.with(context).load(head).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(imageView);

OK收工,有什么不懂得可以留言哦

QQ:910689331

總結

以上是生活随笔為你收集整理的环信ease-sdk-3.3.4_r1 集成用户头像 昵称功能的简单处理方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。