首先我们打开腾讯开发平台这个网页,点击—->移动应用—->创建应用,成功创建应用后,可以产生我们需要的App ID和App Key,如下图所示:
这时候,我们获取盗APP ID准备下面使用,然后下载qq的sdk,
http://wiki.open.qq.com/wiki/mobile/SDK下载
这两个jar包是我们需要导入到自己app中的,
运行效果
接着我们开始集成,在AndroidManifest文件中加入以下内容:
<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="1106002255" />//申请的APP ID
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
当然,还有使用的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
下面就是MainActivity的使用了
package com.zy.activity;
public class MainActivity extends AppCompatActivity {
private BaseIUiListener baseIUiListener;
private Tencent mTencent;//腾讯加包的初始化类
private UserInfo userInfo;//qq用户信息类
public static String mAppid;//上面注册的APP ID
public static String TAG = "zy";
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
userInfo = new UserInfo(MainActivity.this,mTencent.getQQToken());
userInfo.getUserInfo(new UerInfoLiener());
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAppid = AppConstant.APP_ID;//字符串类型的APP ID
baseIUiListener = new BaseIUiListener();//下面的接口回掉
mTencent = Tencent.createInstance(mAppid, getApplicationContext());//初始化
mTencent.login(MainActivity.this, "all", baseIUiListener);//登录
}
//用户信息加载类,实现IUiListener接口
class UerInfoLiener implements IUiListener{
@Override
public void onComplete(Object arg0) {
if(arg0 == null){
return;
}
try {
JSONObject jo = (JSONObject) arg0;
int ret = jo.getInt("ret");
System.out.println("json=" + String.valueOf(jo));
String nickName = jo.getString("nickname");
String gender = jo.getString("gender");
Toast.makeText(MainActivity.this, "你好," + nickName,
Toast.LENGTH_LONG).show();
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
//登录类
class BaseIUiListener implements IUiListener {
@Override
public void onComplete(Object value) {
if (value == null) {
return;
}
try {
JSONObject jo = (JSONObject) value;
int ret = jo.getInt("ret");
System.out.println("json=" + String.valueOf(jo));
if (ret == 0) {
Toast.makeText(MainActivity.this, "登录成功",
Toast.LENGTH_LONG).show();
String openID = jo.getString("openid");
String accessToken = jo.getString("access_token");
String expires = jo.getString("expires_in");
mTencent.setOpenId(openID);
mTencent.setAccessToken(accessToken, expires);
handler.sendEmptyMessage(1);
}
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
//必须重写的onActivityResult,否则无法接受返回信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Tencent.onActivityResultData(requestCode, resultCode, data, baseIUiListener);
}
//销毁时候退出登录
@Override
protected void onDestroy() {
if (mTencent != null) {
mTencent.logout(MainActivity.this);
}
super.onDestroy();
}
}