159 lines
4.5 KiB
C#
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|