报错: NoFoundClassError
原因: smact.jar是windows上的IM实现JAR包,因为android对JAVA类进行了修改,故不能直接使用此JAR包
解决方案: android客户端对应的JAR包是asmact.jar. smact官网没有asmact下载,下载地址为:http://code.google.com/p/asmack/downloads/list asmack-2010.05.07.jar
报错: java.security.KeyStoreException: java.security.NoSuchAlgorithmException: KeyStore jks implementation not found
原因: 需要SASL验证,取消掉此验证。代码:
configuration.setReconnectionAllowed(true);
configuration.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
configuration.setSendPresence(true);
configuration.setSASLAuthenticationEnabled(false);
configuration.setRosterLoadedAtLogin(false);
手机端能发送消息,但不能接受消息?
原因: 具体原因不清楚。
ChatManager与Chat区别:
ChatManager用于监控当前所有chat。可以使用createChat(String userJID, MessageListener listener)创建一个聊天。
Chat用于监控两个用户间的一系列message。使用addMessageListener(MessageListener listener)当有任何消息到达时将会触发listener的processMessage(Chat chat, Message message)
电脑端使用chat就可以发送并接受消息
手机端可以使用chat发送消息,但接受消息只能使用ChatManager。具体代码:
//电脑端可以使用以下语句发送、接受消息
final MessageListener listener=new MessageListener() {
@Override
public void processMessage(Chat arg0, Message arg1) {
receivdMsgString=arg1.getFrom()+":"+arg1.getBody();
System.out.println("processMessage:"+receivdMsgString);
handler.sendEmptyMessage(1);
}
};
chat =connection.getChatManager().createChat(targnameString,listener);
手机接收发送消息:
final MessageListener listener=new MessageListener() {
@Override
public void processMessage(Chat arg0, Message arg1) {
receivdMsgString=arg1.getFrom()+":"+arg1.getBody();
System.out.println("processMessage:"+receivdMsgString);
handler.sendEmptyMessage(1);
}
}; //处理监听接受
connection.getChatManager().addChatListener(new ChatManagerListener(){
@Override
public void chatCreated(Chat chat, boolean createdLocally){
if (!createdLocally)
chat.addMessageListener(listener);
}
});
//只能监听发送
chat =connection.getChatManager().createChat(targnameString,listener);