Android 环信easeui常见问题

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了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值