无法使用smack Android

时间:2015-09-08 05:20:02

标签: android smack

我正在尝试向客户端发送消息但总是收到此异常:org.jivesoftware.smack.SmackException $ NotConnectedException:客户端未连接或不再连接。  以下是我发送消息的代码:

  ChatManager chatMngr = ChatManager.getInstanceFor(connection);

聊天聊天= chatMngr.createChat(toName +" @ stag-api.artistaloud.com",FrgChatRoom.this);

                 try {

                 chat.sendMessage(txtChatMsg.getText().toString().trim());

                 } catch (Exception e) {

                 e.printStackTrace();

                 }

当我在发送消息之前重新登录时。工作正常......请回复..

1 个答案:

答案 0 :(得分:0)

当您与exception无关时,会发生此Xmpp server。   首先确保你是否与服务器连接?并且与asmack libs与服务器连接使用此代码:

private class ConnectToXmpp extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... params) {
      ConnectionConfiguration config = new ConnectionConfiguration( server_host, SERVER_PORT);
      XMPPConnection m_connection = new XMPPConnection(config);
try {
     SASLAuthentication.supportSASLMechanism("PLAIN");
     config.setSASLAuthenticationEnabled(true);     
     m_connection.connect();
    Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.manual);
} catch (XMPPException e) {
    e.printStackTrace();
} 

    return null;
}

@Override
protected void onPostExecute(Void result) {

   }

}

现在您可以new ConnectToXmpp().execute();执行此操作 并且要发送消息,您必须创建chat,如:

    ChatManager chatmanager = ChatManager.getInstanceFor(connection);
Chat newChat = chatmanager.createChat("jsmith@jivesoftware.com", new MessageListener() {
    public void processMessage(Chat chat, Message message) {
        System.out.println("Received message: " + message);
    }
});

try {
    newChat.sendMessage("Howdy!");
}
catch (XMPPException e) {
    System.out.println("Error Delivering block");
}

和Chat.sendMessage(String)方法是一种方便的方法,它创建一个Message对象,使用String参数设置body,然后发送消息。 然后使用此代码sniipet发送消息:

Message newMessage = new Message();
newMessage.setBody("Howdy!");
message.setProperty("favoriteColor", "red");
newChat.sendMessage(newMessage);

以及更多信息see此链接。