作为一个新手做准备工作的时候,在网上找了很多例子,发现其中有很多例子是有错误的,各种花式报错,好在最后终于成功了,在此记录一下自己接入QQSDK的过程。

前期准备

  • QQ官方SDK下载
    地址:http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD版本为:Android_SDK_V3.3.3
  • Unity5.6.1f1以上版本 64位
    当然我也不清楚5.6.1f1以下会不会出错,毕竟我没试过。
  • eclipse下载
    地址:https://www.eclipse.org/downloads/ 本人下载的是2018最新版,Version: Oxygen.3a Release (4.7.3a) 64位
  • *ADT下载
    地址:http://tools.android-studio.org/index.php/adt-bundle-plugin 本人下载的是ADT-23.0.6(64位) 压缩包下载后不要解压
  • android SDK
    地址:http://tools.android-studio.org/index.php/sdk android SDK下载后,还需要 一系列的配置下载才能使用,由于本人是新人,这里不做讲解,如果有不会的同学可以使用我的android SDK (稍后补上)
  • JDK下载
    地址:http://jdk.android-studio.org/ 版本最好使用1.8以上 1.9以下 同样是64位

第一步

安装JDK,并配置环境变量,这里分享个链接给大家作参考http://jingyan.baidu.com/article/3ea51489e1c2b752e61bbad0.html.

第二步

安装eclipse,安装ADT插件和android SDK插件。

从eclipse官网上下载的eclipse-inst-win64.exe只是一个安装程序。双击后选择第二个Eclipse IDE for Java EE Developers.

接着选择安装目录 ,点击INSTALL

安装完成后点击 LAUNCH 进入下面这个画面,给eclipse选择一个工程存放目录后,点击Launch.

进入下面这个画面后,我们要给eclipse安装ADT插件。
点击Help->Install New Software…

ADT可以在线安装,也可以离线安装。但是在线安装需要科学上网。所以这里我们选择离线安装,就要用到之前我们下载的ADT插件。
点击Add,弹出Add Repository界面,Name可以随便取名字,而Location则点击Archive..从目录中找到并选择ADT压缩包。

点击OK后,在软件对话框中,选中”Developer Tools”复选框,然后点击”Next”。 这时候关键的一点,点击Next后,如果下面的进度条一直不动,说明它还是进行了在线安装,那么就需要断网后再点击Next。

点击Next

同意协议后,点击Finish。

这里会弹出一个提醒,点击Install anyway,然后要求你重启eclipse,点击重启。

Eclipse重启之后会根据目录的位置智能地和它相同目录下Android sdk进行关联,如果Eclipse没有自动关联Android sdk的安装目录,那么就会弹出如下图所示的提示信息,要求我们设置Android SDK的安装目录

点击【Open Preferences】按钮,在弹出面板中就会看到Android设置项,填上安装的SDK路径,则会出现刚才在SDK中安装的各平台包,按OK完成配置。

到此eclipse的安装与配置已经完成了。

第三步

创建android 工程:关闭Welcome页面。点击New->Peoject…选择Android->Android Application Project 点击Next.

Application Name和Project Name可以随便起名字。但是Package Name(包名)要跟Unity里面写的一样。下面SDK的选择最好也要跟Unity一样。一直点击Next,最后点击Finish.


然后将android SDK里面的open_sdk_r6008_lite.jar放入android项目中的libs文件夹中,然后右击它,选择Build Path->Add to Build Path。


因为需要跟Unity交互,我们需要Unity的jar文件,在Unity安装目录下找到它,放入android项目中的libs文件夹中,然后右击它,选择Build Path->Add to Build Path。


现在我们开始配置AndroidManifest.xml文件,里面内容都是参考QQ开放平台里面的案例,这里就不做解释了。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zsj.unitygame"android:versionCode="1"android:versionName="1.0" ><uses-sdk
        android:minSdkVersion="21"android:targetSdkVersion="27" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- SDK2.1新增获取用户位置信息 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.GET_TASKS"/><application
        android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity
            android:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></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" />//这里填写的是QQ开发平台上自己申请的APPID。<data android:scheme="tencent100371282" /></intent-filter></activity><activity
            android:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar" /></application></manifest>

AndroidManifest.xml文件配置完成后,开始编写Java代码,代码方面也是参考QQ开放平台的,这里不做解释了,需要的同学请自己去QQ开放平台查看API。

//添加头文件
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.widget.Toast;import org.json.JSONObject;import com.tencent.connect.UnionInfo;
import com.tencent.connect.UserInfo;
import com.tencent.connect.common.Constants;import com.tencent.tauth.IUiListener;
import com.tencent.tauth.UiError;
import com.tencent.tauth.Tencent;import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;//这里要注意把Activity改成UnityPlayerActivity
public class MainActivity extends UnityPlayerActivity {public static Tencent mTencent;public SharedPreferences sharedPrefrences;public Editor editor;public Context context; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);}//登录方法public void LoginAndSend(){//定义一个对象,里面的第一个参数是自己在QQ开放平台上申请的APPID。mTencent = Tencent.createInstance("100371282",this.getApplicationContext());     if (!mTencent.isSessionValid()){                   mTencent.login(this, "all", loginListener);}           }public static void initOpenidAndToken(JSONObject jsonObject) {try {String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires);mTencent.setOpenId(openId);}} catch(Exception e) {}}IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {initOpenidAndToken(values);           }};@Override  //这段代码非常重要,不加的话无法获取回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);}super.onActivityResult(requestCode, resultCode, data);
}private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {if (null == response) {return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {return;}doComplete((JSONObject) response);}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {}@Overridepublic void onCancel() {}
}
}

接着我们要从eclipse中导出jar文件。选择整个项目,右击点击,在目录中选择Export,弹出选框后选择java->JAR file.点击继续

清除所有选项,只选择src,libs,res三个文件夹,同时libs文件中classes要取消掉,不然在unity里面打包会报错。在下面选择打包地址和名字,然后点击Finsih,获得一个test.jar文件。

第四步

在unity里面创建一个安卓项目。
在Assests 中新建Floder命名为“Plugins”,在“Plugins”文件夹中新建Floder命名为“Android” ,在“Android”文件夹新建Floder命名为”bin”,并将刚刚导出的test.ja文件和open_sdk_r6008_lite.jar文件放入此文件夹中。再将Eclipse 的Android项目中复制res文件夹和AndroidManifest.xml一并放入“Android”文件夹中。

在unity中创建一个脚本,并挂在摄像机上。脚本内容如下。

using UnityEngine;
using System.Collections;public class test : MonoBehaviour
{// Use this for initializationvoid Start(){}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)) //在Unity中左键一点击,就执行android中的LoginAndSend方法{AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");jo.Call("LoginAndSend");}}
}

配置Unity安卓环境,要保证跟 eclipse中创建的安卓环境一样。

完成以上步骤后,就可以开始打包APK文件了。在模拟器中安装。

点击一下鼠标,拉取授权~~~~

成功了拉取到授权~~~

【Unity】中接入QQ官方SDK实现QQ登录(Android环境) 新手教程相关推荐

  1. unity中接入Google Play SDK

    参考: Google Play Games plugin for Unity: https://github.com/playgameservices/play-games-plugin-for-un ...

  2. unity中TopOn海外广告sdk接入

    unity版本2019以上(2018可去TopOn官方帮助文档查询)官方帮助文档地址(如果没办法查看,则申请TopOn账号,大概第二天TopOn运营会联系你,如实回答就行) 1. 导入插件 TopOn ...

  3. Android与Unity交互--接入安卓原生SDK

    因技术更新,发现以前的文章有些过时,一些地方跟不上目前进度了,导致开发中出现一大堆问题,所以参考之前的一些文章整理了一下,希望对大家有所帮助. 工具 Unity2020 AndroidStudio 2 ...

  4. Java官方SDK进行QQ接入

    前言 如果你尚未认证成功,请参考我的文章<QQ授权登陆 接入>,完成之后拿到AppID和APP Key进行授权操作.官网的SDK是九年前的代码了,还是基于servlet的.所以如果搭建sp ...

  5. Unity项目接入Steam的SDK

    1. 登录开发者帐号,去steam下载steamworks_sdk 2. 解压放入文件夹中(假设放在D盘根目录下steamworks_sdk),注意(steam works不支持文件路径之中带有空格( ...

  6. 海思官方SDK Hi3516EV200_SDK_V1.0.1.0的编译教程

    前言: 关于海思HI3516EV200的SDK,官方有2个版本,一个是linux,一个是liteos,这里根据之前群友提供的sdk整理总结下,以防大家下载到错误的版本 linux sdk 版本为 Hi ...

  7. python bottle部署_centos6中简单配置nginx+uWSGI+python3+bottle环境新手教程

    这两天在学习python的web开发,一开始是选择的是django,好不容易入门了,发现其与mysql.connector不兼容.裤子都脱了居然闹这样... 于是改用Bottle框架,这个框架对pyt ...

  8. android打包jar包给unity使用接入高德sdk,实现定位。

    https://blog.csdn.net/unity_http/article/details/79929454 https://blog.csdn.net/why1happy/article/de ...

  9. Unity项目接入IOS的Admob Native(原生视频广告) IOS SDK

    实现的功能与Unity项目接入Android的Admob Native(原生视频广告) SDK(二.AS导出aar)相同,但IOS的操作与Android完全不同,接入IOS的SDK大概实现流程是: 1 ...

最新文章

  1. 算法习题---线性表之单链表逆序打印
  2. 2018-2019-1 20165201 实验五 通讯协议设计
  3. (转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性
  4. 笔刷怎么做_原来是这样:用PS笔刷做出颜料肌理效果!
  5. 计算机组成原理个人笔记(一)
  6. html中所用到的英语单词怎么写,8的英语单词怎么写
  7. 在线的图片颗粒化效果实现
  8. 海水淡化除硼工艺及方法
  9. 爬虫攻守道 - 2023最新 - Python Selenium 实现 - 数据去伪存真,正则表达式谁与争锋 - 爬取某天气网站历史数据
  10. AI算法在云音乐搜索的应用
  11. 小型企业网络设计与规划
  12. HTML插件程序,10个最棒的jQuery和HTML所见即所得编辑器插件
  13. marvell yukon 88e8056驱动
  14. matlab数学函数应用,数学函数论文,关于MATLAB软件在高等数学教学中的应用相关参考文献资料-免费论文范文...
  15. 视频网站将延续内容为王的策略
  16. Springfox Swagger2(二):常用注解
  17. iOS开发-实现微博动态Demo展示
  18. C语言计算二进制数加法
  19. 雪崩的时候,没有一片雪花是无辜的
  20. Flask基础(一)

热门文章

  1. 技术人员行走职场三大陷阱之“胡乱跳槽”
  2. 国产自主研发的免费实景三维浏览器,竟然可以这么好用
  3. ele-ui表单验证,异步调用接口判断是否重名
  4. IPFS/Filecoin发展的风向标,是否能再创币圈的奇迹???!
  5. CDLinux 系统 破解WIFI密码 U盘 的制作(网卡:博通BCM4313)
  6. php手机发卡,PHP最新金发卡企业级发卡平台整站源码(自适应手机端) 支付通道齐全 运营级自动发卡完整版源码 发卡网源码...
  7. (1)摄像机-计算机接口
  8. 世界卫生组织:打游戏上瘾,或是一种精神疾病
  9. 河南计算机科学与技术最好的高校,河南计算机专业实力突出的7所大学,郑大位列次席,榜首实至名归...
  10. 用租赁汽车作质押是否构成犯罪?