0
我現在可以發送masseges,我的下一步是接收傳入的消息。我正在尋找很多方法。他們中的大多數在我的版本中被貶損或不可用。即時通訊使用smack 4.2.0。也許有人可以告訴我如何以及在哪裏可以實現捕獲所有傳入消息的偵聽器? 這裏我的代碼:sma 4.2傳入消息
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("[email protected]");
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();
}
}
}
其工作正常一對一聊天..但不工作羣聊。有沒有其他代碼組傳入消息? – user392117
當然,對於這種情況你可以使用MutliUserChat。以下是文檔:https://docs.jivesoftware.com/smack/latest/javadoc/org/jivesoftware/smackx/muc/MultiUserChat.html – Ghostw4lk