2012-03-18 2 views
1

На самом деле проблема заключается в том, когда мой клиент xmpp отправляет приглашение друга, а затем получатель одобряет приглашение, сервер openfire снова нажимает инициатору/приглашенному отправителю пакет подписки, который должен быть авторизирован, поэтому я хочу предотвратить это автоматически фильтруйте его с помощью тега IQ, а затем автоматически авторизуйте его.Как получить IQ-тэг, используя smack Java?

но с PacketListener, я не могу получить IQ тег ...

Как я могу это сделать?

@Override 
public void processPacket(Packet packet) { 
    Log.i(TAG, "SECOND subscription"); 
    Log.d(TAG, "SECOND: "+packet.toXML()); 
    if (packet instanceof Presence) { 
     Presence p = (Presence) packet; 
     Log.d(TAG, "TYPE-Presence: "+p.getType()); 
     if (p.getType() != Presence.Type.subscribe) 
     return; 
     String from = p.getFrom(); 
     Log.d(TAG, "PACKET from: "+from); 
     Notification notification = new Notification(android.R.drawable.stat_notify_more, mService.getString(
       R.string.AcceptContactRequest, from), System.currentTimeMillis()); 
     notification.flags = Notification.FLAG_AUTO_CANCEL; 
     Intent intent = new Intent(mService, Subscription.class); 
     intent.setData(Contact.makeXmppUri(from)); 
     notification.setLatestEventInfo(mService, from, mService 
       .getString(R.string.AcceptContactRequestFrom, from), PendingIntent.getActivity(mService, 0, 
         intent, PendingIntent.FLAG_ONE_SHOT)); 
     int id = p.hashCode(); 
     mService.sendNotification(id, notification); 
    } 
} 

ответ

3

Входящие IQ можно отфильтровывать, используя фильтр «IQTypeFilter». Это пример кода, который иллюстрирует метод.

connection.connect(); 

    /* packet listener: listen for incoming messages of type IQ on the connection (whatever the buddy) */ 
    PacketFilter filter = new IQTypeFilter(IQ.Type.SET); // or IQ.Type.GET etc. according to what you like to filter. 

    connection.addPacketListener(new PacketListener() { 
     public void processPacket(Packet packet) { 
      // HERE YOU PUT YOUR CODE TO HANDLE THE IQ MESSAGE 
     } 
    }, filter); 
+0

Work Great! Благодаря! – user724861

+0

Не могли бы вы немного подробнее рассказать о своем ответе. на самом деле я не знаю, как обрабатывать сообщение IQ –

Смежные вопросы