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登录操作代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android  Intent传递数据底层分析详细介绍

    Android Intent传递数据底层分析详细介绍

    这篇文章主要介绍了Android Intent传递数据底层分析详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • Android调用系统摄像头拍照并显示在ImageView上

    Android调用系统摄像头拍照并显示在ImageView上

    这篇文章主要为大家详细介绍了Android调用系统摄像头拍照并显示在ImageView上,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android应用App更新实例详解

    Android应用App更新实例详解

    现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新。该项目实现的就是这个功能。下面跟着小编一起来看下吧
    2017-03-03
  • Android Webview重定向问题解决方法

    Android Webview重定向问题解决方法

    在Android开发过程中,使用过WebView的童鞋可能难免会遇到URL重定向问题。这篇文章主要介绍了Android Webview重定向问题解决方法,非常具有实用价值,需要的朋友可以参考下
    2018-05-05
  • Android开发之APP安装后在桌面上不显示应用图标的解决方法

    Android开发之APP安装后在桌面上不显示应用图标的解决方法

    这篇文章主要介绍了Android开发之APP安装后在桌面上不显示应用图标的解决方法,涉及Android activity相关属性设置技巧,需要的朋友可以参考下
    2017-07-07
  • React Native开发中自动打包脚本的实例代码

    React Native开发中自动打包脚本的实例代码

    这篇文章主要介绍了React Native开发中自动打包脚本的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Android中FoldingLayout折叠布局的用法及实战全攻略

    Android中FoldingLayout折叠布局的用法及实战全攻略

    这篇文章主要介绍了Android中FoldingLayout折叠布局的用法及实例,通过FoldingLayout我们可以制作出炫酷的菜单折叠效果,文中的例子讲解得非常详细,需要的朋友可以参考下
    2016-02-02
  • Android注册登录实时自动获取短信验证码

    Android注册登录实时自动获取短信验证码

    注册登录或修改密码功能常常需要输入短信验证码,如何自动获取短信验证码,这篇文章就为大家介绍了Androidcv注册登录自动获取短信验证码的实现代码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • HandlerThread的使用场景和用法详解

    HandlerThread的使用场景和用法详解

    这篇文章主要介绍了HandlerThread的使用场景和用法详解,HandlerThread是Android中的一个线程类,它是Thread的子类,并且内部封装了Looper和Handler,提供了更方便的消息处理和线程操作,需要的朋友可以参考下
    2023-07-07
  • Android中WebView的使用与后退键处理详细讲解

    Android中WebView的使用与后退键处理详细讲解

    博主自从开始写安卓以来,一直饱受WebView的摧残,好在网上一大堆的大神给出了他们成长路上遇到的坑以及一些解决办法,这篇文章主要给大家介绍了关于Android中WebView的使用与后退键处理的相关资料,需要的朋友可以参考下
    2024-04-04

最新评论