Android Studio实现第三方QQ登录操作代码

 更新时间:2017年12月07日 14:07:52   作者:qingxuan521721  
这篇文章主要介绍了Android Studio实现第三方QQ登录的操作方法,本文图文并茂给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下

来看看效果图吧

这里写图片描述    这里写图片描述

 
                                                这里写图片描述

http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD 下载SDKJar包 接下来就可以

实现QQ登录了,

新建一个项目工程 ,然后把我们刚才下载的SDK解压将jar文件夹中的jar包拷贝到我们的项目libs中

这里写图片描述

  导入一个下面架包就可以

项目结构如下

这里写图片描述

打开我们的清单文件Androidmanifest 在里面加入权限和注册Activity 如下

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tangxiaoying.qq2">
 <!-- QQ登录授权所需权限 -->
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <application
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:roundIcon="@mipmap/ic_launcher_round"
  android:supportsRtl="true"
  android:theme="@style/AppTheme">
  <activity android:name=".MainActivity">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <!-- 注册SDKActivity -->
  <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="tencent1105602574" /> <!-- 开放平台获取的APPID -->
   </intent-filter>
  </activity>
  <activity android:name="com.tencent.connect.common.AssistActivity"
   android:theme="@android:style/Theme.Translucent.NoTitleBar"
   android:screenOrientation="portrait"/>
 </application>
</manifest>

布局文件activity_main 就一个Button按钮

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
  >
 <Button
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="点击QQ登录"
  android:onClick="buttonLogin"
  android:layout_centerInParent="true"
  android:textSize="16sp"
  android:textColor="#f4736e"/>
</RelativeLayout>

下面就是我们的MainActivity中的代码了

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
 private static final String TAG = "MainActivity";
 private static final String APP_ID = "1105602574";//官方获取的APPID
 private Tencent mTencent;
 private BaseUiListener mIUiListener;
 private UserInfo mUserInfo;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //传入参数APPID和全局Context上下文
  mTencent = Tencent.createInstance(APP_ID,MainActivity.this.getApplicationContext());
 }
 public void buttonLogin(View v){
  /**通过这句代码,SDK实现了QQ的登录,这个方法有三个参数,第一个参数是context上下文,第二个参数SCOPO 是一个String类型的字符串,表示一些权限
   官方文档中的说明:应用需要获得哪些API的权限,由“,”分隔。例如:SCOPE = “get_user_info,add_t”;所有权限用“all”
   第三个参数,是一个事件监听器,IUiListener接口的实例,这里用的是该接口的实现类 */
  mIUiListener = new BaseUiListener();
  //all表示获取所有权限
  mTencent.login(MainActivity.this,"all", mIUiListener);
 }
 /**
  * 自定义监听器实现IUiListener接口后,需要实现的3个方法
  * onComplete完成 onError错误 onCancel取消
  */
 private class BaseUiListener implements IUiListener {
  @Override
  public void onComplete(Object response) {
   Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show();
   Log.e(TAG, "response:" + response);
   JSONObject obj = (JSONObject) response;
   try {
    String openID = obj.getString("openid");
    String accessToken = obj.getString("access_token");
    String expires = obj.getString("expires_in");
    mTencent.setOpenId(openID);
    mTencent.setAccessToken(accessToken,expires);
    QQToken qqToken = mTencent.getQQToken();
    mUserInfo = new UserInfo(getApplicationContext(),qqToken);
    mUserInfo.getUserInfo(new IUiListener() {
     @Override
     public void onComplete(Object response) {
      Log.e(TAG,"登录成功"+response.toString());
     }
     @Override
     public void onError(UiError uiError) {
      Log.e(TAG,"登录失败"+uiError.toString());
     }
     @Override
     public void onCancel() {
      Log.e(TAG,"登录取消");
     }
    });
   } catch (JSONException e) {
    e.printStackTrace();
   }
  }
  @Override
  public void onError(UiError uiError) {
   Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
  }
  @Override
  public void onCancel() {
   Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
  }
 }
 /**
  * 在调用Login的Activity或者Fragment中重写onActivityResult方法
  * @param requestCode
  * @param resultCode
  * @param data
  */
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if(requestCode == Constants.REQUEST_LOGIN){
   Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener);
  }
  super.onActivityResult(requestCode, resultCode, data);
 }
}

总结

以上所述是小编给大家介绍的Android Studio实现第三方QQ登录操作代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 自定义view视图之Canvas+Paint图形绘制

    自定义view视图之Canvas+Paint图形绘制

    这篇文章主要介绍了自定义view视图之Canvas+Paint图形绘制,我们开发自定义view的时候,就要绘制自己心仪的图形,这个时候我们就要能够熟练的运用我们的绘图知识,需要的朋友可以参考下
    2023-04-04
  • Flutter实现可循环轮播图效果

    Flutter实现可循环轮播图效果

    这篇文章主要介绍了Flutter实现可循环轮播图效果,本文图文并茂通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2019-07-07
  • Android Bitmap详解及Bitmap的内存优化

    Android Bitmap详解及Bitmap的内存优化

    这篇文章主要介绍了Android Bitmap详解及Bitmap的内存优化的相关资料,Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件,需要的朋友可以参考下
    2017-03-03
  • Android APP数字解锁实例详解

    Android APP数字解锁实例详解

    这篇文章主要介绍了Android 应用数字解锁实例详解的相关资料,这里附有实例代码及实现效果图,需要的朋友可以参考下
    2016-11-11
  • Android 简单好用的屏幕适配方案

    Android 简单好用的屏幕适配方案

    这篇文章主要介绍了Android 简单好用的屏幕适配方案,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-04-04
  • Android实现轮播图片展示效果

    Android实现轮播图片展示效果

    这篇文章主要为大家详细介绍了Android实现轮播图片展示效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Android实现简单的popupwindow提示框

    Android实现简单的popupwindow提示框

    这篇文章主要为大家详细介绍了Android实现简单的popupwindow提示框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android开发常用标签小结

    Android开发常用标签小结

    这篇文章主要介绍了Android开发常用标签,分析总结了Android开发中常见标签的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Android View实现圆形进度条

    Android View实现圆形进度条

    这篇文章主要为大家详细介绍了Android View实现圆形进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android中判断网络连接状态的方法

    Android中判断网络连接状态的方法

    App判断用户是否联网是很普遍的需求,这篇文章主要介绍了Android中判断网络连接状态的方法,感兴趣的朋友可以参考一下
    2016-02-02

最新评论