Android 环信easeui常见问题

来源:互联网 发布:软件著作权多少钱 编辑:程序博客网 时间:2024/05/17 18:46

Android 环信在选择联系人的时候没有群组:

之前做了环信的自定义消息:环信自定义消息

在做消息转发以及分享的时候需要跳转到选择联系人界面。但是发现默认只有具体的联系人,并没有群组。

所以只能是靠自己实现了:

1.PickContactNoCheckboxActivity类是选择联系人界面的基类,在这个类中有一个方法时获取联系人getContactList()。需要在这个方法中将群组列表添加进去:

//TODO 添加群组        List<EMGroup> allGroups = EMClient.getInstance().groupManager().getAllGroups();        for (EMGroup emGroup : allGroups) {            String username = emGroup.getGroupId();            String nick = emGroup.getGroupName();            EaseUser user = new EaseUser(username);            user.setNick(nick);            user.setAvatar(R.drawable.em_group_icon + "");            user.setFlag(true);            contactList.add(user);        }

注意:
Map<String, EaseUser> users = DemoHelper.getInstance().getContactList();
这个方法是获取好友集合,一定要将DemoHelper类的getContactList()方法进行修改,每次都要在数据库获取,而不是内存,不然数据有重复。

public Map<String, EaseUser> getContactList() {        if (isLoggedIn() && contactList == null) {            contactList = demoModel.getContactList();        }        //TODO 用来删除已添加的群组        if (contactList != null) {            contactList.clear();            contactList = demoModel.getContactList();        }        // return a empty non-null object to avoid app crash        if (contactList == null) {            return new Hashtable<String, EaseUser>();        }        return contactList;}

2.在EaseUser类中添加一个字段,用来区分是好友或者群组;

3.在EaseContactAdapter类getView()方法中,判断是好友还是群组,用来区分加载不同的头像:

//TODO 个人(单聊)        if (!user.getFlag()) {            EaseUserUtils.setUserNick(username, holder.nameView);            EaseUserUtils.setUserAvatar(getContext(), username, holder.avatar);        } else {//群组(群聊)            holder.nameView.setText(user.getNick());            try {                int avatarResId = Integer.parseInt(user.getAvatar());                Glide.with(context).load(avatarResId).into(holder.avatar);            } catch (Exception e) {                //use default avatar                Glide.with(context).load(user.getAvatar()).diskCacheStrategy(DiskCacheStrategy.ALL).placeholder(R.drawable.ease_default_avatar).into(holder.avatar);            }        }


4..在ForwardMessageActivity类onListItemClick()方法中进行判断不同的跳转,用来区分是单聊还是群聊。

@Override    protected void onListItemClick(int position) {        selectUser = contactAdapter.getItem(position);        new EaseAlertDialog(this, null, getString(R.string.confirm_forward_to, selectUser.getNick()), null, new AlertDialogUser() {            @Override            public void onResult(boolean confirmed, Bundle bundle) {                if (confirmed) {                    if (selectUser == null)                        return;                    try {                        ChatActivity.activityInstance.finish();                    } catch (Exception e) {                    }                    //TODO 单聊/群组聊天                    boolean flag = selectUser.getFlag();                    if (!flag) {                        Intent intent = new Intent(ForwardMessageActivity.this, ChatActivity.class);                        // it is single chat                        intent.putExtra("userId", selectUser.getUsername());                        intent.putExtra("forward_msg_id", forward_msg_id);                        startActivity(intent);                    } else {                        Intent intent = new Intent(ForwardMessageActivity.this, ChatActivity.class);                        intent.putExtra("chatType", Constant.CHATTYPE_GROUP);                        intent.putExtra("forward_msg_id", forward_msg_id);                        intent.putExtra("userId", selectUser.getUsername());                        startActivity(intent);                    }                    finish();                }            }        }, true).show();    }

修改聊天界面输入框背景:

在easeui库中找的EaseChatPrimaryMenu类,全局搜索edittext_layout,将设置的背景改成自己OK了。


原创粉丝点击