时间仓促,在此仅做一些流水式的记录,便于后面查询。主要的代码片段如下:
     

private MultiUserChat muc = null; private boolean isHistory = false;
 private int count = 0;
 private final int RECEIVE = 1;
 private Handler mGroupHandler = new Handler() {

  @Override
  public void handleMessage(android.os.Message msg) {
   // TODO Auto-generated method stub
   switch(msg.what) {
   case RECEIVE:
    Bundle bd = msg.getData();
    String from = bd.getString("from");
    String body = bd.getString("body");
    String msgHeader = "有新的群消息了";
    String msgContent = "\n" + from + ":" + "\n" + body;
    if (isHistory) {
     ToastDialog.showToast(ZhiyouHomepage.this, msgHeader + msgContent);
    }
    break;
   default:
    break;
   }
  }
    };

muc = new MultiUserChat(SmackImpl.mXMPPConnection, "xiaoyou@conference.job36-247-5");
try {
   muc.join("EricSong");
} catch (XMPPException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
} muc.addMessageListener(new ChatPacketListener(muc));
muc.addParticipantListener(new PacketListener() {
   
   @Override
   public void processPacket(Packet arg0) {
    // TODO Auto-generated method stub
    Message msg = (Message)arg0;
    ToastDialog.showToast(ZhiyouHomepage.this, msg.getFrom()+":"+msg.getBody());
   }
});
private class ChatPacketListener implements PacketListener {
  private String _number;
  private Date _lastDate;
  private MultiUserChat _muc;
  private String _roomName;

  public ChatPacketListener(MultiUserChat muc) {
   _number = "0";
   _lastDate = new Date(0);
   _muc = muc;
   _roomName = muc.getRoom();
  }

  @Override
  public void processPacket(Packet packet) {
   System.out.println("消息格式:" + packet.toXML());
   Message message = (Message) packet;
   String from = message.getFrom();

   if (message.getBody() != null) {
    DelayInformation inf = (DelayInformation) message.getExtension(
      "x", "jabber:x:delay");
    System.out.println("判断消息");
    if (inf == null && count >= 1) {
     System.out.println("新消息来了");
     isHistory = true;
    } else {
     System.out.println("这是旧的消息");
    }
    android.os.Message msg = new android.os.Message();
    msg.what = RECEIVE;
    Bundle bd = new Bundle();
    bd.putString("from", from);
    bd.putString("body", message.getBody());
    msg.setData(bd);
    mGroupHandler.sendMessage(msg);
   }
   count++;
  }
 }


更多相关文章

  1. Android中通过Intent调用其他应用的方法
  2. android中的 Handler机制
  3. Android消息提示框和对话框
  4. 查询存储空间的代码
  5. Android面试题总结(七)原理篇
  6. Android(安卓)四个步骤集成EventBus事件总线框架实现消息发送和
  7. Android(安卓)获取系统日期时间并且不断更新,类似时钟
  8. Android(安卓)首选网络模式默认值的修改方法
  9. Android(安卓)中Handler引起的内存泄露

随机推荐

  1. android的几种渲染与裁剪
  2. Android为Notification加上一个进度条
  3. android 如何判断程序是否在前台运行
  4. android登录模块
  5. Managing APN Settings on Google Androi
  6. 【android】 sqliter数据库CRUD
  7. First Preview of Android(安卓)N: Devel
  8. android保存文件
  9. 【android错误收集】android.view.Inflat
  10. Android之极光推送发送自定义消息