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())
下载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())
相关文章推荐
- android 优化
- 在Android中显示GIF动画
- 在Android中显示GIF动画
- Window下采用ant 脚本构建Android自动化编译
- Android 2014-3-13
- Android常用组件【转】
- Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据
- 运行Android 出现Please ensure that adb is correctly located at问题
- Android如何调用第三方SO库
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
- Mars老师的Android学习基本路线指导(转
- 【转】如何学习android开发
- 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
- Android开发之旅一常用的正则表达式
- 关于Android Canvas.drawText方法中的坐标参数的正确解释
- Android || IOS录制mp3语音文件方法
- 重新认识Android Activity的生命周期
- Android Unable to resolve target 'android-8'
- Android-Looper类介绍
- Android导入第三方jar包