Android 基于聊天页面如何实现批量转发和批量删除

发布时间: 2019-07-26 16:20

回答:

Android 基于聊天页面如何实现批量转发和批量删除

  1. 继承 ConversationFragment 类,重写 showMoreClickItem 并返回 true 。

  2. 重写 getMoreClickActions 。

    @Override
    public List<IClickActions> getMoreClickActions() {
        List<IClickActions> actions = new ArrayList();
        actions.addAll(super.getMoreClickActions());
        actions.add(0, new ForwardClickActions());
        return actions;
    }

3.  继承 IClickActions 实现 ForwardClickActions 。

public class ForwardClickActions implements IClickActions {

    @Override
    public Drawable obtainDrawable(Context context) {
        return context.getResources().getDrawable(R.drawable.seal_selector_multi_forward);
    }
     @Override
    public void onClick(Fragment curFragment) {
            //具体实现参考第 4 步实现。
    }

4.  可以通过继承 IClickActions 在 onClick 调用 getCheckedMessages() 可以获取已经被选中的消息,进行过滤。

@Override
    public void onClick(Fragment curFragment) {
        ConversationFragment fragment = (ConversationFragment) curFragment;
        List<Message> messages = fragment.getCheckedMessages();
        }

获取到选中的消息,转发可以检查一下消息是否可以转发(比如红包消息,位置消息等不应该被转发,基于用户隐私考虑是否转发语音消息等),然后进入通讯录页面转发给指定的好友。

5.  以上代码均可以在 SealTalk 源码的 ConversationFragmentEx,ForwardClickActions 中找到。

6.  需要注意的是 Android 端有发送频率限制,最多 5条/秒 ,如果直接 for 循环发送会有部分发送失败,建议是转发过程做个等待,比如 0.3 秒发送一条消息,转发完成之后需要调用