查看http://wiki.connect.qq.com/中的Android应用接入API
下载jar包(open_sdk.jar,mta-sdk-1.0.0.jar)
在Android项目中 AndroidManifest.xml
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent22222" /> <!--此处修改为自己注册的项目APP ID
</intent-filter>
</activity>
在主程序中 MainActivity.java
private QQAuth mQQAuth;
public static Context appContext;
private Button mNewLoginButton;
private String mAppid="22222";
private UserInfo mInfo;
private TextView mUserInfo;
private ImageView mUserLogo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
appContext = getApplicationContext();
mQQAuth = QQAuth.createInstance("22222", this);
mUserInfo = (TextView) findViewById(R.id.user_nickname);
mUserLogo = (ImageView) findViewById(R.id.user_logo);
mNewLoginButton = (Button) findViewById(R.id.login1);
mNewLoginButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
IUiListener listener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
updateUserInfo();
updateLoginButton();
System.out.println(mQQAuth.getQQToken().getOpenId());
}
};
mQQAuth = QQAuth.createInstance(mAppid, MainActivity.appContext);
mQQAuth.login(MainActivity.this, "all", listener);
}
}).start();
}
});
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
Util.showResultDialog(MainActivity.this, response.toString(), "登录成功");
doComplete((JSONObject)response);
}
protected void doComplete(JSONObject values) {
System.out.println(values);
}
@Override
public void onError(UiError e) {
Util.toastMessage(MainActivity.this, "onError: " + e.errorDetail);
Util.dismissDialog();
}
@Override
public void onCancel() {
Util.toastMessage(MainActivity.this, "onCancel: ");
Util.dismissDialog();
}
}
private void updateUserInfo() {
if (mQQAuth != null && mQQAuth.isSessionValid()) {
IUiListener listener = new IUiListener() {
@Override
public void onError(UiError e) {
}
@Override
public void onComplete(final Object response) {
Message msg = new Message();
msg.obj = response;
msg.what = 0;
mHandler.sendMessage(msg);
new Thread(){
@Override
public void run() {
JSONObject json = (JSONObject)response;
if(json.has("figureurl")){
Bitmap bitmap = null;
try {
bitmap = Util.getbitmap(json.getString("figureurl_qq_2"));
} catch (JSONException e) {
}
Message msg = new Message();
msg.obj = bitmap;
msg.what = 1;
mHandler.sendMessage(msg);
}
}
}.start();
}
@Override
public void onCancel() {
}
};
mInfo = new UserInfo(this, mQQAuth.getQQToken());
mInfo.getUserInfo(listener);
} else {
mUserInfo.setText("");
mUserInfo.setVisibility(android.view.View.GONE);
mUserLogo.setVisibility(android.view.View.GONE);
}
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JSONObject response = (JSONObject) msg.obj;
if (response.has("nickname")) {
try {
mUserInfo.setVisibility(android.view.View.VISIBLE);
mUserInfo.setText(response.getString("nickname"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else if(msg.what == 1){
Bitmap bitmap = (Bitmap)msg.obj;
mUserLogo.setImageBitmap(bitmap);
mUserLogo.setVisibility(android.view.View.VISIBLE);
}
}
};
一般QQ账号绑定用户是通过每个QQ号获得的唯一openid连接的(mQQAuth.getQQToken().getOpenId())