gpt4 book ai didi

android - 如何使用 smack API 4.1.0 android 发送一对一消息

转载 作者:行者123 更新时间:2023-11-29 17:16:01 24 4
gpt4 key购买 nike

我正在使用 smack API 官方文档中的代码向特定的 Jabber ID 发送消息。
CLick Here

我可以使用以下代码从房间接收消息。

   public  void joinChatRoom(){
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
multiUserChat = manager.getMultiUserChat("test@-mbp-9");
try {
multiUserChat.join("user");
} catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (XMPPException.XMPPErrorException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
ChatManager.getInstanceFor(connection).addChatListener(new ChatManagerListener() {
@Override
public void chatCreated(Chat chat, boolean createdLocally) {
chat.addMessageListener(new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
System.out.println(message.getBody());
}
});
}
});
System.out.println("Test");
}

我的问题 是我如何向特定的 JID 发送消息,因为即使在谷歌搜索了很多我遗漏的内容之后我也无法解决这个问题。连接很好,用户也在进行身份验证,但下面的代码现在可以发送消息。

 public void sendMsg() {
if (connection.isConnected()) {
// Assume we've created an XMPPConnection name "connection"._
chatmanager = ChatManager.getInstanceFor(connection);
newChat = chatmanager.createChat("user123@csofts-mbp-9", new ChatMessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
System.out.println("Received Message:"+message);
}
});

try {
System.out.println("check the message....");
newChat.sendMessage("Howdy!alksd;lsakdsa;lkdsa;lksa;lsa");
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
}

如有任何帮助,我们将不胜感激。

最佳答案

这是我上一个项目发送消息代码的例子:

private void sendMessage(String body, String toJid) {
try {
Jid jid = JidCreate.from(toJid + "@" + MyApplication.CHAT_DOMAIN);
Chat chat = ChatManager.getInstanceFor(mConnection)
.createChat(jid.asJidWithLocalpartIfPossible());
chat.sendMessage(body);
} catch (Exception e) {
}
}

更新:

如何接收消息:

当您通过身份验证时:

ChatManager.getInstanceFor(mConnection).addChatListener(YourConnectionClass.this);

(你的连接类应该实现 ChatManagerListener 和 ChatMessageListener)

您还需要实现以下方法:

@Override
public void chatCreated(Chat chat, boolean b) {
chat.addMessageListener(ChatConnection.this);
}

@Override
public void processMessage(Chat chat, Message message) {
if (message.getType().equals(Message.Type.chat) || message.getType().equals(Message.Type.normal)) {
if (message.getBody() != null) {
Jid jid = message.getFrom();
Localpart localpart = jid.getLocalpartOrNull();
...
}
}
}

关于android - 如何使用 smack API 4.1.0 android 发送一对一消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38991085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com