1.登录账号,创建应用,生成APPID与APPKEY
2.下载相关SDK
SDK下载地址:https://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
3.将其SDK里面相关的文件拷到自己的项目当中去
- 需要将 open_sdk_r6137_lite.jar包放到自己的项目当中去,并引用
- Androidminfist.xml里面需要配置相关代码
<activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid: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" /><!--注意,这里的222222要换成app自己的appid--><data android:scheme="tencent222222" /><!-- 100380359 100381104 222222 --></intent-filter></activity>
- 代码实现功能
Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下
lateinit var mTencent: Tencent@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 其中APP_ID是分配给第三方应用的appid,类型为String
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext())
// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取<br>
}//以下代码是唤起第三方应用QQ,并进行登录mTencent.logout(this)if (!mTencent.isSessionValid) {//进行登录操作mTencent.login(this, "all", loginListener)//进行扫码登录操作mTencent.login(this, "all", loginListener, true)}
你的AppId则要替换成具体应用的AppId,例如你的AppId是”222222″,则标签应该是这样的:
- 登录成功之后,进行回调操作
1.实现UIlistener()类
2.登录成功,会得到JSON数据
3.务必,将数据通过initOpenidAndToken()方法进行配置
4.调用getUserInfo()得到用户信息loginListener = object : BaseUiListener() {override fun doComplete(values: JSONObject) {initOpenidAndToken(values)getUserInfo()}}/*** 根据QQ授权登录之后,得到的token。进行配置* 1.必须进行配置,不然取不到QQ用户的一些基本信息*/fun initOpenidAndToken(jsonObject: JSONObject) {try {val token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN)val expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN)val openId = jsonObject.getString(Constants.PARAM_OPEN_ID)if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires)mTencent.openId = openId}} catch (e: Exception) {}}/*** 取用户信息*/fun getUserInfo() {val userInfo = UserInfo(this, mTencent.qqToken)userInfo.getUserInfo(object : IUiListener {override fun onComplete(response: Any?) {val type = object : TypeToken<QQUserInfoModel>() {}.typeval qqUserInfoModel = GsonUtils.fromJson<QQUserInfoModel>(response.toString(), type)}override fun onCancel() {}override fun onError(error: UiError?) {}})}private open inner class BaseUiListener : IUiListener {override fun onComplete(response: Any?) {doComplete((response as JSONObject?)!!)}protected open fun doComplete(values: JSONObject) {}override fun onError(e: UiError) {}override fun onCancel() {}}
特别注意
应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) {//当QQ登录完成后,进行回调Tencent.onActivityResultData(requestCode, resultCode, data, loginListener)}super.onActivityResult(requestCode, resultCode, data)}
- 开发过程中常见的一些问题
详情跳转: Android SDK常见问题 - 常用的API接口
详情跳转 Android_SDK功能列表