unity 使用Android Studio 接入QQ 官方SDK 采用 jar包模式

最近自己摸索了如何接入QQ SDK 其实接入SDK 我认为最麻烦的地方在于AndroidManifest如何修改
废话不多说 进入正题:
首先去官网下载QQ官方SDK:
https://wiki.connect.qq.com/
下载完后 我们创建一个新的Android Studio 包名 看你自己需要进行填写
在这里插入图片描述
进入后界面如下
在这里插入图片描述
打开 build.gradle
在这里插入图片描述
我这边显示这样 接着修改成:
在这里插入图片描述
修改完记得点击 sync now 更新

接着我们将unity的jar包导入: 路径位于
G:\unity2017\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes
以及 QQ官方下载的SDK中open_sdk_r6019_lite.jar 导入libs文件夹下
如图:
在这里插入图片描述
接着右键将jar添加进依赖中
在这里插入图片描述
为了确定是否添加成功可以在build.gradle中看到
在这里插入图片描述
红框显示就是我已经将jar添加进去了

接着我们把视图设置为Android
在这里插入图片描述
接着我们修改MainActivity 路径在
在这里插入图片描述
具体如何修改可以参照官方给的案例
https://wiki.connect.qq.com/qq%E7%99%BB%E5%BD%95

我最后修改后的代码如下:

package com.ghyedu.tencent2;

import com.tencent.open.utils.HttpUtils;
import com.tencent.tauth.IRequestListener;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.unity3d.player.UnityPlayerActivity;

import android.os.Bundle;

import org.apache.http.conn.ConnectTimeoutException;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.SocketTimeoutException;

public class MainActivity extends UnityPlayerActivity {

    private Tencent mTencent;
    private String appId = ""; //你的appId 需要在官方申请
    private String scope = "all"; //这个具体参数 请查阅官方文档 我也不是很清楚
    private BaseUiListener listener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void init(){
        mTencent = Tencent.createInstance(appId,this.getApplicationContext());
    }

    public void login()
    {
        if (!mTencent.isSessionValid())
        {
            mTencent.login(this, scope,listener);
        }
    }

    private class BaseUiListener implements IUiListener {
        @Override
        public void onComplete(Object response) {
            doComplete((JSONObject)response);
        }
        protected void doComplete(JSONObject values) {
        }
        @Override
        public void onError(UiError e) {

        }
        @Override
        public void onCancel() {

        }
    }

    private class BaseApiListener implements IRequestListener {
        @Override
        public void onComplete(final JSONObject response) {

            doComplete(response);
        }
        protected void doComplete(JSONObject response) {
        }
        @Override
        public void onIOException(final IOException e) {

        }
        @Override
        public void onMalformedURLException(final MalformedURLException e) {

        }
        @Override
        public void onJSONException(final JSONException e) {
            
        }
        @Override
        public void onConnectTimeoutException(ConnectTimeoutException arg0) {
// TODO Auto-generated method stub
        }
        @Override
        public void onSocketTimeoutException(SocketTimeoutException arg0) {
// TODO Auto-generated method stub
        }
        //1.4版本中IRequestListener 新增两个异常
        @Override
        public void onNetworkUnavailableException(HttpUtils.NetworkUnavailableException e){
// 当前网络不可用时触发此异常
        }
        @Override
        public void onHttpStatusException(HttpUtils.HttpStatusException e) {
// http请求返回码非200时触发此异常
        }
        @Override
        public void onUnknowException(Exception e) {
// 出现未知错误时会触发此异常
        }
    }

}

接着我们Make 模块 如图
在这里插入图片描述
接着我们把app\build\intermediates\packaged-classes\debug下面的classes.jar 拿出来
现在我们请出unity 新建项目切换android平台 在把 我们拿出来的jar 和 官方的jar 以及AndroidManifest 文件放在Plugins/Android/下
如图
在这里插入图片描述
接着我们需要修改AndroidManifest 文件 打开后默认如图
在这里插入图片描述
最后修改完后为

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
    package="com.GHYEdu.QQSDK">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
	
    <application
		tools:replace = "android:icon"
		android:label="QQSDK"
		android:icon = "@drawable/app_icon"
		
        android:allowBackup="true"		
        android:supportsRtl="true">
		<uses-library android:name="org.apache.http.legacy" android:required="false" />
        <activity android:name="com.ghyedu.tencent2.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>

        <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="tencent101753906" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="behind"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

    </application>
	<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="25" />
</manifest>

package 后面的包名填写Unity打包的包名即可
android:label=“QQSDK” 是应用的名称

需要修改成自己的appId
接着我们就可以写个简单的脚本来测试了
最后unity 场景如下
在这里插入图片描述
QQSDK 代码如下


using UnityEngine;
using UnityEngine.UI;

public class QQSDK : MonoBehaviour 
{
    private AndroidJavaObject jo;
    private AndroidJavaClass jc;
    public Button loginBtn;

    private void Awake()
    {
        jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        loginBtn.onClick.AddListener(OnLoginClick);
    }

    private void Start()
    {
        jo.Call("init");
    }

    private void OnLoginClick()
    {
        Debug.Log("点击登录");
        jo.Call("login");
    }

}

然后接着设置Build Settings 中的Build System 需要设置为Gradle
然后设置Player Settings 我的设置如下
在这里插入图片描述
在这里插入图片描述
需要用自己的签名 没有的话就自己去创建
设置完就可以build了
然后安装在手机上
我直接用我的手机测试 最后效果如下在这里插入图片描述
在这里插入图片描述

有什么问题请QQ找我 备注说明原因 否则不加

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值