第一步:准备工作
在腾讯开放平台 http://op.open.qq.com/mobile_appinfov2/detail?appid=1105841817 注册提交app信息获取appId,在个人后台可以直接加固app并上线应用宝
第二步:下载jar包添加到lib中,在as中不要忘记
repositories {
flatDir {
dirs 'libs'
}
}
第三步:配置清单文件
<!--qq-->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
<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="1105841817" /> <!--qq appid-->
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
第四步:代码
public class LoginActivity extends BaseActivity {
private static final String QQ_APPID = "1105841817";
private Tencent mTencent; //qq主操作对象
private String userId = "";
private String name = "";
private String imgUrl = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mTencent = Tencent.createInstance(QQ_APPID, this);
}
@OnClick({R.id.qq})
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.qq:
mTencent.login(this, "all", new MyQQAuthListener());
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//SDK自带常量
if (requestCode == Constants.REQUEST_LOGIN) {
if (resultCode == Constants.ACTIVITY_OK) {
Tencent.handleResultData(data, new MyQQAuthListener());
}
super.onActivityResult(requestCode, resultCode, data);
}
}
class MyQQAuthListener implements IUiListener {
@Override
public void onComplete(Object o) {
if (o == null) {
return;
}
try {
JSONObject jo = (JSONObject) o;
int ret = jo.getInt("ret");
if (ret == 0) {
userId = jo.getString("openid");
String accessToken = jo.getString("access_token");
String expires = jo.getString("expires_in");
mTencent.setOpenId(userId);
mTencent.setAccessToken(accessToken, expires);
new UserInfo(mContext,mTencent.getQQToken()).getUserInfo(new MyQQUserInfoListener());
}
} catch (Exception e) {
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
class MyQQUserInfoListener implements IUiListener {
@Override
public void onComplete(Object o) {
if (o == null) {
return;
}
try {
JSONObject jo = (JSONObject) o;
name = jo.getString("nickname");
imgUrl = jo.getString("figureurl_qq_1");
} catch (Exception e) {
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
}