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;
}
}