java - 如何使用 smack Java 获取 IQ 标签?

标签 java xmpp smack

实际上,问题是当我的 xmpp 客户端发送 friend 邀请,然后接收者批准了邀请,openfire 服务器再次向发起者/邀请发送者推送一个订阅数据包被授权,这就是我要防止的原因这是通过使用 IQ 标签自动过滤它然后自动授权它。

但是使用 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);
    }
}

最佳答案

可以使用“IQTypeFilter”过滤器过滤掉传入的 IQ。这是说明该方法的示例代码。

    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);  

关于java - 如何使用 smack Java 获取 IQ 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9759263/

相关文章:

java - 最小化 Java 线程上下文切换开销

java - 我看到花括号、圆括号和分号彼此相邻,为什么?

xmpp - 使用 xmpppy 库在 XMPP 服务器上注册用户

android - 使用 Smack 4.1 连接到 Gtalk

java - 好处或使用 XML 优于 MySQL,反之亦然?

javascript - 在浏览器中从 selenium 构建器运行 Mocha 测试

android - 如何在 Smack 中启用 XEP-0199?

android - XMPP(带有 smack)- 添加好友

android - 如何使用 smack-android 连接到安全禁用的 ejabberd?

java - Qsub 与作业脚本与输入