|
|
@@ -11,6 +11,7 @@ import android.util.Log;
|
|
|
|
|
|
import com.xzjmyk.pm.activity.MyApplication;
|
|
|
import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
|
|
|
|
|
|
import org.apache.harmony.javax.security.sasl.SaslException;
|
|
|
import org.jivesoftware.smack.AbstractConnectionListener;
|
|
|
@@ -19,7 +20,7 @@ import org.jivesoftware.smack.SmackException;
|
|
|
import org.jivesoftware.smack.SmackException.NotConnectedException;
|
|
|
import org.jivesoftware.smack.XMPPConnection;
|
|
|
import org.jivesoftware.smack.XMPPException;
|
|
|
-import org.jivesoftware.smack.XMPPTCPConnection;
|
|
|
+import org.jivesoftware.smack.tcp.XMPPTCPConnection;
|
|
|
import org.jivesoftware.smack.packet.Presence;
|
|
|
import org.jivesoftware.smack.util.StringUtils;
|
|
|
import org.jivesoftware.smackx.ping.PingManager;
|
|
|
@@ -118,7 +119,7 @@ public class XmppConnectionManager {
|
|
|
}
|
|
|
final boolean isConnected = isGprsOrWifiConnected();
|
|
|
if (mIsNetWorkActive != isConnected) {// 和之前的状态不同
|
|
|
- Log.d("roamer", "网络状态改变了");
|
|
|
+ Log.d("roamer", "网络状态改变了doLogining:"+doLogining);
|
|
|
mIsNetWorkActive = isConnected;
|
|
|
// 网络状态改变了
|
|
|
if (!mIsNetWorkActive) {// 由有网变为没网
|
|
|
@@ -126,6 +127,8 @@ public class XmppConnectionManager {
|
|
|
mLoginThread.interrupt();
|
|
|
}
|
|
|
} else {
|
|
|
+ LogUtil.d("Xmpp","isLoginAllowed():"+isLoginAllowed());
|
|
|
+ doLogining=true;
|
|
|
if (isLoginAllowed()) {
|
|
|
login(mLoginUserId, mLoginPassword);
|
|
|
}
|
|
|
@@ -197,6 +200,12 @@ public class XmppConnectionManager {
|
|
|
private boolean doLogining = false;
|
|
|
|
|
|
private boolean isLoginAllowed() {
|
|
|
+ LogUtil.d("Xmpp","---------isLoginAllowed()------------");
|
|
|
+ LogUtil.d("Xmpp","doLogining:"+doLogining);
|
|
|
+ LogUtil.d("Xmpp","mIsNetWorkActive:"+mIsNetWorkActive);
|
|
|
+ LogUtil.d("Xmpp","!mConnection.isConnected():"+!mConnection.isConnected());
|
|
|
+ LogUtil.d("Xmpp","!mConnection.isAuthenticated():"+!mConnection.isAuthenticated());
|
|
|
+ LogUtil.d("Xmpp","---------isLoginAllowed()------------");
|
|
|
return doLogining && mIsNetWorkActive && (!mConnection.isConnected() || !mConnection.isAuthenticated());
|
|
|
}
|
|
|
|
|
|
@@ -219,11 +228,19 @@ public class XmppConnectionManager {
|
|
|
presenceOffline();
|
|
|
}
|
|
|
if (mConnection.isConnected()) {
|
|
|
- mConnection.disconnect();
|
|
|
+ disconnect();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void disconnect() {
|
|
|
+ try {
|
|
|
+ mConnection.disconnect();
|
|
|
+ } catch (NotConnectedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public synchronized void login(final String userId, final String password) {
|
|
|
Log.d("roamer", "login start");
|
|
|
if (mConnection.isAuthenticated()) {// 如果已经登陆
|
|
|
@@ -231,7 +248,7 @@ public class XmppConnectionManager {
|
|
|
if (StringUtils.parseName(mConnection.getUser()).equals(userId)) {// 如果登陆的用户和需要在登陆的是同一个用户,赋予可能改变的用户名和密码,返回
|
|
|
return;
|
|
|
} else {
|
|
|
- mConnection.disconnect();
|
|
|
+ disconnect();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -278,7 +295,7 @@ public class XmppConnectionManager {
|
|
|
}
|
|
|
mReconnectionManager.release();
|
|
|
if (mConnection != null && mConnection.isConnected()) {
|
|
|
- mConnection.disconnect();
|
|
|
+ disconnect();
|
|
|
}
|
|
|
presenceOffline();
|
|
|
}
|
|
|
@@ -326,7 +343,8 @@ public class XmppConnectionManager {
|
|
|
Log.d("roamer", "login try");
|
|
|
try {
|
|
|
if (!mConnection.isConnected()) {
|
|
|
- ((XMPPTCPConnection) mConnection).connectWithoutLogin();
|
|
|
+ //((XMPPTCPConnection) mConnection).connectWithoutLogin();
|
|
|
+ mConnection.connect();
|
|
|
}
|
|
|
if (mConnection.isConnected()) {
|
|
|
PingManager.getInstanceFor(mConnection).setPingInterval(60);
|
|
|
@@ -347,7 +365,7 @@ public class XmppConnectionManager {
|
|
|
|
|
|
if (mConnection.isAuthenticated()) {
|
|
|
if (!StringUtils.parseName(mConnection.getUser()).equals(loginUserId)) {
|
|
|
- mConnection.disconnect();
|
|
|
+ disconnect();
|
|
|
} else {
|
|
|
doLogining = false;
|
|
|
mAbstractConnectionListener.authenticated(mConnection);
|