【发布时间】:2017-12-13 09:00:05
【问题描述】:
我现在可以发送按摩,下一步是接收传入的消息。我正在寻找很多方法。它们中的大多数在我的 smack 版本中已被废弃或不可用。我正在使用 smack 4.2.0。也许有人可以告诉我如何以及在哪里实现一个捕获所有传入消息的侦听器? 这是我的代码:
MainActivity.class
包 com.example.saddam.xmpp3;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jxmpp.stringprep.XmppStringprepException;
public class MainActivity extends AppCompatActivity {
Button b1;
TextView chat;
final connectXmpp con = new connectXmpp();
public MainActivity() throws XmppStringprepException {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
con.execute();
b1 = (Button) findViewById(R.id.button);
chat = (TextView) findViewById(R.id.editText);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AbstractXMPPConnection conn=con.getConnection();
con.sendMessage(conn,chat);
}
});
}
}
connectXmpp.class
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.jxmpp.jid.EntityBareJid;
import org.jxmpp.jid.impl.JidCreate;
import org.jxmpp.stringprep.XmppStringprepException;
import java.io.IOException;
/**
* Created by saddam on 08.07.2017.
*/
public class connectXmpp extends AsyncTask<Void,Void,Void> {
static AbstractXMPPConnection conn2= null;
final EntityBareJid jid = JidCreate.entityBareFrom("hss404@im.koderoot.net");
public connectXmpp() throws XmppStringprepException {
}
@Override
protected Void doInBackground(Void... voids) {
XMPPTCPConnectionConfiguration config = null;
try {
config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword("username", "password")
.setXmppDomain("dismail.de")
.setHost("dismail.de")
.setPort(5222).setKeystoreType(null)
.build();
} catch (XmppStringprepException e) {
e.printStackTrace();
}
conn2 = new XMPPTCPConnection(config);
try {
conn2.connect();
conn2.login();
} catch (InterruptedException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} catch (SmackException e1) {
e1.printStackTrace();
} catch (XMPPException e1) {
e1.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
}
public AbstractXMPPConnection getConnection(){
return conn2;
}
public ChatManager getChatMana(AbstractXMPPConnection c){
ChatManager chatManager = ChatManager.getInstanceFor(c);
return chatManager;
}
public void sendMessage(final AbstractXMPPConnection c, TextView t){
ChatManager chatManager = null;
Message newMessage = null;
chatManager = ChatManager.getInstanceFor(c);
try {
Chat chat = chatManager.chatWith(jid);
newMessage = new Message();
newMessage.setBody(t.getText().toString());
chat.send(newMessage);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
标签: android listener message smack