1. android環信實現會話列表怎麼實現調用easeui
到相應報錯的地方把swipeRefreshLayout.setColorSchemeResources改成swipeRefreshLayout.setColorScheme,ViewCompat.getX改成new ViewCompat().getX,然後重新 build 即可。
或者,把v4包的版本號加大,譬如compile 'com.android.support:support-v4:23.1.
2. android環信群組聊天怎樣設置頭像和昵稱
如果你是群主或者是管理員,那麼就可以修改成員名稱,如圖在點群成員改名就可以了!
3. android 集成環信EaseUI 怎麼修改為自定義界面
可以參考如下內容:
Android EaseUI 關於設置昵稱、頭像
關於依賴easeui,設置頭像、昵稱問題
在調用EaseUI.getInstance().init初始化之後去設置用戶信息提供者
//get easeui instance
EaseUI easeUI = EaseUI.getInstance();
//需要easeui庫顯示用戶頭像和昵稱設置此provider
easeUI.setUserProfileProvider(new EaseUserProfileProvider() {
@Override
public EaseUser getUser(String username) {
return getUserInfo(username);
}
});
getUserInfo是自己實現的一個方法,在這個方法里去根據傳入的username獲取本地保存的對應的昵稱、頭像,設置給EaseUser的對象,並返回。
easeui里顯示昵稱、頭像的時候會去調用EaseUserProfileProvider這個介面去獲取EaseUser對象,會去執行在初始化之後設置的getUserInfo方法,如果沒有顯示昵稱、頭像,你就要去看getUserInfo里是否拿到昵稱、頭像設置給EaseUser對象了。
獲取昵稱、頭像顯示,我這里給大家兩種方案,昵稱、頭像都保存在自己的伺服器。
第一種
可以在登錄之後去伺服器獲取所有好友的昵稱、頭像,包括自己的,保存在本地,getUserInfo方法里就去根據傳入的username去本地獲取,設置給EaseUser對象返回。
第二種
可以在getUserInfo方法里去判斷本地是否有保存對應的昵稱和頭像,沒有就發送網路請求去伺服器獲取對應的昵稱頭像保存到本地,設置給EaseUser對象返回 ,然後發送廣播到聊天界面去提示刷新,刷新之後就會執行getUserInfo方法拿到本地的昵稱、頭像。
頭像、昵稱更新
用戶請求你的伺服器修改了昵稱、頭像,你的伺服器去調用rest給這個用戶的所有好友,發條透傳消息,提示去更新本地保存的昵稱、頭像
4. android 環信怎麼接收透傳消息
注冊透傳消息廣播如下:
// 透傳廣播
IntentFilter cmdIntentFilter = new IntentFilter(EMChatManager.getInstance().getCmdMessageBroadcastAction());
CMDBroadcastReceiver cmdMessageReceiver = new CMDBroadcastReceiver();
appContext.registerReceiver(cmdMessageReceiver, cmdIntentFilter);
發送透傳消息如下:
EMMessage cmdMsg = EMMessage.createSendMessage(EMMessage.Type.CMD);// 透傳消息
//支持單聊和群聊,默認單聊,如果是群聊添加下面這行
// cmdMsg.setChatType(ChatType.GroupChat);
//action可以自定義,在廣播接收時可以收到
CmdMessageBody cmdBody = new CmdMessageBody(action);
cmdMsg.addBody(cmdBody);
// 給自己的好友發送通知
if (IMHelper.getInstance().getImUserList() != null && IMHelper.getInstance().getImUserList().size() > 0) {
for(IMUser imUser:IMHelper.getInstance().getImUserList()){
if(!imUser.getUid().equals(curUsername)){// 不給自己發送這條消息
cmdMsg.setReceipt(imUser.getUid());// 接收這條通知的人id
cmdMsg.setAttribute("ToUsername",curUsername);// 需要修改當前用戶的頭像id
cmdMsg.setAttribute(key,obj);//支持自定義擴展
sendCMDMessage(cmdMsg);
}
}
}
private static void sendCMDMessage(EMMessage cmdMsg){
EMChatManager.getInstance().sendMessage(cmdMsg,new EMCallBack() {
@Override
public void onSuccess() {
// 發送成功
}
@Override
public void onProgress(int arg0, String arg1) {
// 發送進度
}
@Override
public void onError(int arg0, String arg1) {
// 發送失敗
}
});
}
接收透傳的廣播如下:
public class CMDBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("ME", "進入到廣播啦");
if(intent!=null){
//獲取cmd message對象
String msgId = intent.getStringExtra("msgid");
EMMessage message = intent.getParcelableExtra("message");
//獲取消息body
CmdMessageBody cmdMsgBody = (CmdMessageBody) message.getBody();
String aciton = cmdMsgBody.action;//獲取自定義action
if(IMConstants.ACTION_UPDATE_USER_AVATAR.equals(aciton)){// 更新頭像指令
updateAvatar(message);
}else if(IMConstants.ACTION_UPDATE_USER_NICK.equals(aciton)){// 更新昵稱
updateNick(message);
}
}
}