在Android开发中,经常需要绑定QQ,正确的作法去QQ互联上查看实现步骤就可以了,我这里主要说的是,比如第一次用QQ登录,然后退出登录,第二次继续点击QQ登录,但是中间无法出现授权状态的拉取界面,直接显示绑定成功或者绑定失败!
原因分析:
mTencent = Tencent.createInstance(Constants.tencentAPPID, this.getApplicationContext());
初次实例化mTencent对象后,直接使用,在退出登录时,没有按照官方文档对mTencent进行注销,所以第二次QQ登录时,mTencent对象还存在,就会直接登录成功!
解决方法:
在退出登录时,需要将mTencent实例对象注销,按照官方文档调用mTencent.logout(mContext);方法即可,下次使用QQ登录时,仍然可以拉取QQ登录界面进行号码更换或者授权。
相关代码如下:private void otherBind(final JSONObject json, final int type) {
pDialog.show();
new Thread() {
public void run() {
try {
String result = Commons.getHttpResult(Commons
.getCommonJson(json, BandAccountActivity.this,
"BindingThirdUser"));
Log.d(Constants.TAG, "===BandAccountActivity===第三方绑定结果===:"+result);
JSONObject resultData = new JSONObject(result);
String errcode = resultData.getString("errcode");
if ("0".equals(errcode)) {
if (type == Constants.WEIBOLOGIN) {
weiboState = true;
} else if (type == Constants.QQLOGIN) {
qqState = true;
}
handler.obtainMessage(2, type).sendToTarget();
} else if("1004".equals(errcode)){
if(type==1){
QQInfo.logout(mTencent, BandAccountActivity.this);
}
handler.obtainMessage(6, type).sendToTarget();
}else {
if(type==1){
QQInfo.logout(mTencent, BandAccountActivity.this);
}
handler.obtainMessage(3, type).sendToTarget();
}
} catch (Exception e) {
if(type==1){
QQInfo.logout(mTencent, BandAccountActivity.this);
}
handler.obtainMessage(3, type).sendToTarget();
}
}
}.start();
}