using System.Collections; using System.Collections.Generic; using System; using UnityEngine; /// /// 安卓原生交互类 /// public class AndroidInteractive : MonoBehaviour { /// /// 单键 /// private static AndroidInteractive pInit = null; public static Action LoginSuccessCall = null; public static Action LoginFailCall = null; public static Action LogoutCall = null; public static Action PaySuccessCall = null; public static Action PayFailCall = null; /// /// 当前版本 /// public static string curVersion = ""; /// /// 当前年龄 /// public static int curAge = -1; /// /// 获取单键 /// /// 单键实例 public static AndroidInteractive Instance() { return pInit; } /// /// 初始化 /// private void Awake() { // 初始化 pInit = this; } /// /// SDK登录成功回调 /// /// private void SDKLoginSuccess(string uid) { Debug.Log("SDK 登录成功!"); if (LoginSuccessCall != null) { LoginSuccessCall(uid); } } /// /// SDK登录失败回调 /// /// private void SDKLoginFail(string msg) { Debug.Log("SDK 登录失败!"); if (LoginFailCall != null) { LoginFailCall(msg); } } /// /// SDK登出回调 /// /// private void SDKLogout(string msg) { Debug.Log("SDK 登出成功!"); if (LogoutCall != null) { LogoutCall(msg); } } /// /// SDK支付成功回调 /// /// private void SDKPaySuccess(string oderID) { if (PaySuccessCall != null) { PaySuccessCall(oderID); } } /// /// SDK支付失败回调 /// /// private void SDKPayFail(string msg) { if (PayFailCall != null) { PayFailCall(msg); } } /// /// 查询年龄段 /// public int GetUserAge() { if(curAge != -1) { return curAge; } try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { //// 获取平台名字 //string PlatformName = ajo.Call("GetPlatformName"); // 获取当前版本 string strAge = ajo.Call("GetUserAge"); Debug.Log("获取当前年龄__________________________" + strAge); curAge = int.Parse(strAge); UserProxy.Instance.player.ageRange = curAge; return curAge; } } } catch (Exception exc) { curAge = 99; return curAge; } } // 获取Version Name public String GetVersionName() { if (curVersion != "") { return curVersion; } try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { //// 获取平台名字 //string PlatformName = ajo.Call("GetPlatformName"); // 获取当前版本 curVersion = ajo.Call("GetVersionName"); Debug.Log("获取当前版本__________________________" + curVersion); return curVersion; } } } catch (Exception exc) { curVersion = "unity"; return curVersion; } } /// /// 调用Java层函数 /// public static bool CallJavaFunction(string className) { if (Application.platform == RuntimePlatform.Android) { try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { ajo.Call(className); return true; } } } catch (Exception exc) { Debug.LogError("调用《" + className + "》异常: " + exc); } } return false; } /// /// 调用Java层函数 /// public static bool CallJavaFunction(string funName, string Parameter1) { if (Application.platform == RuntimePlatform.Android) { try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { ajo.Call(funName, Parameter1); return true; } } } catch (Exception exc) { Debug.LogError("调用《" + funName + "》异常: " + exc); } } return false; } /// /// 调用Java层函数 /// public static bool CallJavaFunction(string funName, string Parameter1, string Parameter2) { if (Application.platform == RuntimePlatform.Android) { try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { ajo.Call(funName, Parameter1, Parameter2); return true; } } } catch (Exception exc) { Debug.LogError("调用《" + funName + "》异常: " + exc); } } return false; } /// /// 调用Java层函数 /// public static bool CallJavaFunction(string funName, string Parameter1, string Parameter2, string Parameter3) { if (Application.platform == RuntimePlatform.Android) { try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { ajo.Call(funName, Parameter1, Parameter2, Parameter3); return true; } } } catch (Exception exc) { Debug.LogError("调用《" + funName + "》异常: " + exc); } } return false; } /// /// 调用Java层函数 /// public static bool CallJavaFunction(string funName, string Parameter1, string Parameter2, string Parameter3, string Parameter4) { if (Application.platform == RuntimePlatform.Android) { try { using (AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject ajo = ajc.GetStatic("currentActivity")) { ajo.Call(funName, Parameter1, Parameter2, Parameter3, Parameter4); return true; } } } catch (Exception exc) { Debug.LogError("调用《" + funName + "》异常: " + exc); } } return false; } }