SDK_UnityMoney/Assets/Script/SDKManager/TransferManager/TransferAndroidClass.cs

159 lines
4.5 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace WZ
{
#region Android接口代理类
/// <summary>
/// RequestListener接口代理
/// </summary>
class RequestListenerProxy : AndroidJavaProxy
{
private Action<bool,string> _callback;
public RequestListenerProxy(Action<bool,string> callback) : base("com.drive.master.game.RequestListener")
{
_callback = callback;
}
}
#endregion
public class TransferAndroidClass : MonoBehaviour
{
private static AndroidJavaClass transferSDKClass = null;
private static AndroidJavaObject currentActivity = null;
public static void Init()
{
if (transferSDKClass == null)
{
try
{
var name = "com.drive.master.game.TransferSDK";
LoggerUtils.Debug("TransferSDK初始化: class name = "+name);
transferSDKClass = new AndroidJavaClass(name);
// 获取Unity当前Activity
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
}
}
catch (Exception e)
{
LoggerUtils.Error("TransferSDK初始化失败: " + e.Message);
return;
}
}
// 调用init方法
transferSDKClass.CallStatic("init");
}
#region VPN权限相关
/// <summary>
/// 检查是否有VPN权限
/// </summary>
public static bool IsVpnPermissionGranted()
{
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
return transferSDKClass.CallStatic<bool>("isVpnPermissionGranted");
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN权限失败: " + e.Message);
return false;
}
}
/// <summary>
/// 申请VPN权限并连接VPN
/// </summary>
public static void RequestVpnPermission(Action<bool,string> callback)
{
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
callback?.Invoke(false,"TransferSDK未初始化");
return;
}
try
{
transferSDKClass.CallStatic("requestVpnPermission", currentActivity, new RequestListenerProxy(callback));
}
catch (Exception e)
{
LoggerUtils.Error("申请VPN权限失败: " + e.Message);
callback?.Invoke(false,"申请VPN权限失败: " + e.Message);
}
}
/// <summary>
/// 检查VPN连接状态
/// </summary>
public static bool IsVpnConnected()
{
if (transferSDKClass == null)
{
LoggerUtils.Warning("TransferSDK未初始化");
return false;
}
try
{
return transferSDKClass.CallStatic<bool>("isVpnConnected");
}
catch (Exception e)
{
LoggerUtils.Error("检查VPN状态失败: " + e.Message);
return false;
}
}
#endregion
#region AdMob相关
/// <summary>
/// 检查是否能使用AdMob
/// </summary>
public static void IsAllowAdMob(Action<bool, string> callback)
{
if (transferSDKClass == null)
{
Debug.LogWarning("TransferSDK未初始化");
callback?.Invoke(false, "SDK未初始化");
return;
}
try
{
transferSDKClass.CallStatic("isAllowAdMob", new RequestListenerProxy(callback));
}
catch (Exception e)
{
LoggerUtils.Error("检查AdMob权限失败: " + e.Message);
callback?.Invoke(false, "SDK调用异常");
}
}
#endregion
}
}