我是XMPP世界的新手。我试图通过安装在同一台机器上的模拟器连接安装在localhost上的Open Fire Server。到目前为止,我能够连接到服务器,但是当尝试从Emulator发送消息到服务器时,使用MessageListener()SMACK类时出错。以下是我得到的错误: -
" Class'从MessageListener派生的匿名类'必须要么声明为抽象的,要么实现抽象方法' processMessage(Message)'在' MessageListener'"
试图谷歌,但无法找出为什么会出现此错误。 以下是我写的代码: -
private class MyTask extends AsyncTask<Void, Void, Void> {
String textResult;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) throws XMPPException {
// run your networking code here
// Create the configuration for this new connection
XMPPTCPConnectionConfiguration.Builder configBuilder =
XMPPTCPConnectionConfiguration.builder();
configBuilder.setSecurityMode
(ConnectionConfiguration.SecurityMode.disabled);
configBuilder.setServiceName("fire");
configBuilder.setHost("10.0.2.2");
configBuilder.setPort(5222);
configBuilder.setCompressionEnabled(false);
configBuilder.setResource("kenta");
configBuilder.setDebuggerEnabled(true);
configBuilder.setUsernameAndPassword("kenta@fire", "fire");
AbstractXMPPConnection connection = new
XMPPTCPConnection(configBuilder.build());
// Connect to the server
try {
connection.connect();
} catch(SmackException e)
{
e.printStackTrace();
textResult = e.toString();
} catch(IOException e)
{
e.printStackTrace();
textResult = e.toString();
}
catch (XMPPException e) {
e.printStackTrace();
textResult = e.toString();
}
// Log into the server
try {
connection.login();
// Assume we've created an XMPPConnection name "connection"._
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);
}
});
newChat.sendMessage("Howdy!");
} catch (XMPPException e) {
e.printStackTrace();
textResult = e.toString();
} catch (SmackException e) {
e.printStackTrace();
textResult = e.toString();
} catch (IOException e) {
e.printStackTrace();
textResult = e.toString();
}
// Disconnect from the server
//connection.disconnect();
return null;
}
Thnx提前帮助你。
答案 0 :(得分:2)
能够通过用ChatMessageListener()替换MessageListener()来解决错误。在SMACK 4.1版本下,MessageListener已重命名为ChatMessageListener。注意:MessageListener仍然存在,具有不同的接口契约!
建议在使用作为各种网站解决方案一部分的代码之前,先查看课程的最新发布文档。
感谢大家帮助我并给予适当的时间解决问题。