我构建了一个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