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