Android(XMPP)无法获取Presence数据包,但可以在不使用默认Roster的情况下获取Message数据包

时间:2016-12-27 12:10:19

标签: android android-intent xmpp packets

我构建了一个im应用程序,可以成功地与其他用户聊天。(使用Xmpp,Smack)。现在我想获得状态更新(当用户上线或离线时(我不关心其余部分))所以我尝试将我用于消息的相同代码应用于状态。(我们有自定义iq,我们不使用其他班级名单)

if (packet instanceof Message) {
                Message message = (Message) packet;
                String from = message.getFrom();
                String contactJid = "";
                if (from.contains("/")) {
                    contactJid = from.split("/")[0];
                    Log.d(TAG, "The real jid is :" + contactJid);
                } else {
                    contactJid = from;
                }
                if (message != null && message.getBody() != null) {
                    System.out.println("Received message from "
                            + contactJid + " : "
                            + (message != null ? message.getBody() : "NULL"));

我在同一个while(true)语句中以相同的方式获取消息,我可以得到它们。但是我没有得到任何状态更新(它们被添加到服务器端的“customroster”中)。为了你的节奏,我也会复制我收到消息的方式,但它们是相同的。

  Intent intent = new Intent(ConnectionService.NEW_MESSAGE);
                intent.setPackage(mApplicationContext.getPackageName());
                intent.putExtra(ConnectionService.BUNDLE_FROM_JID, contactJid);
                intent.putExtra(ConnectionService.BUNDLE_MESSAGE_BODY, message.getBody());
                mApplicationContext.sendBroadcast(intent);

现在之后我也发送了一个意图,但在我的问题中并不重要(我想因为我甚至没有得到Presence数据包所以它永远不会进入if语句)

initial_position

0 个答案:

没有答案