一岂傲、導(dǎo)入jar文件
gradle配置:
compile files('libs/open_sdk_r5923_lite.jar')
二、 配置AndroidManifest
在應(yīng)用的AndroidManifest.xml增加配置的<application>節(jié)點(diǎn)下增加以下配置(注:不配置將會(huì)導(dǎo)致無(wú)法調(diào)用API);
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<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="tencent你的AppId" />
</intent-filter>
</activity>
<application>
SDK_V2.0引入了AssistActivity,開(kāi)發(fā)者需在androidManifest.xml中注冊(cè)。代碼如下:
<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"
/>
通過(guò)以上兩個(gè)步驟吴侦,工程就已經(jīng)配置完成了。接下來(lái)就可以在代碼里使用QQ互聯(lián)的SDK進(jìn)行開(kāi)發(fā)了坞古。
三备韧、創(chuàng)建實(shí)例并實(shí)現(xiàn)回調(diào)
建議在Application中配置全局的比較實(shí)用
public class MyApplication extendsApplication {
public static Tencent mTencent;
public static Tencent getmTencent() {
return mTencent;
}
public static void setmTencent(Tencent mTencent) {
SkyPineApplication.mTencent = mTencent;
}
@Override
public void onCreate() {
super.onCreate();
// Tencent類是SDK的主要實(shí)現(xiàn)類,開(kāi)發(fā)者可通過(guò)Tencent類訪問(wèn)騰訊開(kāi)放的OpenAPI痪枫。
// 其中APP_ID是分配給第三方應(yīng)用的appid织堂,類型為String。
mTencent = Tencent.createInstance(ConfigurationSettings.TENCENT_APP_ID, this.getApplicationContext());
}
接下來(lái)就是直接登錄奶陈、獲取用戶信息即可
登錄
/**
* qq
* scope 應(yīng)用需要獲得哪些API的權(quán)限易阳,由“,”分隔吃粒。
* 例如:SCOPE = “get_user_info,add_t”潦俺;所有權(quán)限用“all”
*/
public static final String ACOPE_ALL = "all";
BaseUiListener listener;
public void login() {
listener = new BaseUiListener();
if (!mTencent.isSessionValid()) {
mTencent.login(this, ACOPE_ALL, listener);
}
}
登錄回調(diào)
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object value) {
Log.e(TAG, value.toString());
//{"ret":0,"openid":"1BD6DE05A2A48E3AFF3905766855C30C","access_token":"072A085194740A54A85EA555D3AFE7EB",
// "pay_token":"765794D8CB4DFE50B743E98A9BBFC239","expires_in":7776000,"pf":"desktop_m_qq-10000144-android-2002-",
// "pfkey":"20d22c7e64c46aa138b69b5ebe89511a","msg":"","login_cost":493,"query_authority_cost":118,"authority_cost":24924}
try {
JSONObject jsonObject = (JSONObject) value;
int ret = jsonObject.getInt("ret");
if (ret == 0) {
showMessage("login success");
//此處登錄授權(quán)成功
String openId = jsonObject.getString(PARAM_OPEN_ID);
String access_token = jsonObject.getString(PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(PARAM_EXPIRES_IN);
mTencent.setOpenId(openId);
mTencent.setAccessToken(access_token, expires);
//獲取用戶信息
getUserInfo();
} else {
showMessage("login failed");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Log.e(TAG, uiError.errorMessage);
showMessage("falied");
}
@Override
public void onCancel() {
Log.e(TAG, "cancel");
showMessage("cancel");
}
}
用戶信息
private void getUserInfo() {
UserInfo info = new UserInfo(LoginActivity.this, mTencent.getQQToken());
info.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object value) {
JSONObject jsonObject = (JSONObject) value;
Log.e(TAG, jsonObject.toString());
}
@Override
public void onError(UiError uiError) {
Log.e(TAG, uiError.errorMessage);
}
@Override
public void onCancel() {
}
});
}
調(diào)用QQ注銷接口
public void logout()
{
mTencent.logout(this);
}
特別注意
應(yīng)用調(diào)用Andriod_SDK接口時(shí),如果要成功接收到回調(diào)徐勃,需要在調(diào)用接口的Activity的onActivityResult方法中增加如下代碼:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Tencent.onActivityResultData(requestCode,resultCode,data,listener);
}
其中onActivityResultData接口中的listener為當(dāng)前調(diào)用的Activity所實(shí)現(xiàn)的相應(yīng)回調(diào)UIListener事示。