腾讯开放平台首页
SDK下载中心
- 先看下Manifests所需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 需要注册的Activity
<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="tencent222222" />
</intent-filter>
</activity>
<activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- 这里使用到的KEY是腾讯默认测试的222222
tencent = Tencent.createInstance(KEY, getApplicationContext());
/** * 登录,第二个参数代表权限 */
tencent.login(MainActivity.this, "all", listener);
这里获取到的是腾讯返回的唯一标识(openID,accessToken等)
private IUiListener listener = new IUiListener() {
@Override
public void onComplete(Object response) {
try {
JSONObject object = new JSONObject(response + "");
int ret = object.getInt("ret");
if (ret == 0) {
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show();
String openID = object.getString("openid");
String accessToken = object.getString("access_token");
String expires = object.getString("expires_in");
tencent.setOpenId(openID);
tencent.setAccessToken(accessToken, expires);
/** * 获取用户昵称,头像等信息 */
UserInfo userInfo = new UserInfo(MainActivity.this, tencent.getQQToken());
userInfo.getUserInfo(new MyIUiListener());
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
};
然后获取用户基本信息
private class MyIUiListener implements IUiListener {
@Override
public void onComplete(Object obj) {
try {
JSONObject object = new JSONObject(obj + "");
String ret = object.getString("ret");
String is_lost = object.getString("is_lost");
String nickname = object.getString("nickname");
String gender = object.getString("gender");
String province = object.getString("province");
String city = object.getString("city");
/** *头像会有几个不同的尺寸的地址,我只取了其中一个 */
final String figureurl_qq_2 = object.getString("figureurl_qq_2");
nickName.setText(nickname);
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = MyUtil.downLoadImage(figureurl_qq_2);
Message message = new Message();
message.obj = bitmap;
handler.sendMessage(message);
}
}).start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
}
然后就是调用分享功能
private void createShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
params.putString(QQShare.SHARE_TO_QQ_TITLE, "a_zhon");
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "我自己的QQ");
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://blog.csdn.net/a_zhon");
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://www.xiufa.com/BJUI/plugins/kindeditor_4.1.10/attached/image/20160427/20160427020327_69298.png");
tencent.shareToQQ(MainActivity.this, params, shareListener);
}
还须重写onActivityResult方法,不然获取不到用户信息(貌似不重写也能获取到用户信息,有兴趣的童鞋可以自己试一下)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_LOGIN) {
Tencent.onActivityResultData(requestCode, resultCode, data, listener);
}
有需要的可以下载一下Demo下载
OK大功告成,然后就下班回家吃饭了。。。