您的位置:首页 > 移动开发 > Android开发

Android手机客户端使用QQ登录

2014-03-13 13:51 561 查看
查看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())
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: