#if UNITY_ANDROID using UnityEngine; using LitJson; using System; /// /// Android平台SDK实现,继承SDKBaseImpl。 /// 通过AndroidJavaClass与原生SDK交互。 /// public class SDKAndroidImpl : SDKBaseImpl { public SDKAndroidImpl(SDKUtils utils) : base(utils) { } // ------------------------------------------------------- // 底层消息发送 —— 通过AndroidJavaClass调用原生SDK // ------------------------------------------------------- public override void SendToNative(string jsonStr) { if (VersionConfig.Get().appId == "sghy") { using (var sdk = new AndroidJavaClass("com.xssg.sdk.UnityMsgHandler")) sdk.CallStatic("onUnityMessage", jsonStr); } else { using (var sdk = new AndroidJavaClass("com.wgyx.sdk.UnityMsgHandler")) sdk.CallStatic("onUnityMessage", jsonStr); } } // ------------------------------------------------------- // 初始化 —— 检查内置资源拷贝状态 + 同步包ID // ------------------------------------------------------- public override void InitPlatform() { var savedVer = LocalSave.GetString("BuiltInAssetCopyCompleted_Android"); SDKUtils.builtinAssetCopyFinished = !string.IsNullOrEmpty(savedVer) && VersionConfig.Get().version == savedVer; SyncClientPackageID(); } // ------------------------------------------------------- // SDK登录 —— 走正常原生SDK流程 // ------------------------------------------------------- public override void FreePlatformLogin() { utils.SendSdkMessage(SDKUtils.CodeU2A.FreePlatformLogin); } // ------------------------------------------------------- // 设备信息 —— Android特有:mac/imei/totalMemory // ------------------------------------------------------- public override void FillDeviceInfo(JsonData json) { utils.Device.macAddress = json["mac"].ToString(); utils.Device.imei = json["imei"] != null ? json["imei"].ToString() : utils.Device.uniqueID; utils.Device.totalMemory = (int)json["memoryTotal"]; } // ------------------------------------------------------- // 退出游戏 // ------------------------------------------------------- public override void ExitGame() { Application.Quit(); } // ------------------------------------------------------- // Android专属:权限 & 包ID // ------------------------------------------------------- public override void SyncClientPackageID() { utils.SendSdkMessage(SDKUtils.CodeU2A.ClientPackage, json => json["clientPkgID"] = VersionConfig.Get().clientPackageFlag); } public override void RequestPermission(string permission, Action callBack) { utils.RegisterPermissionCallback(callBack); utils.SendSdkMessage(SDKUtils.CodeU2A.RequestPermission, json => json["permission"] = permission); } public override void RequestPermissionStart() { utils.SendSdkMessage(SDKUtils.CodeU2A.RequestPermissionStart); } // ------------------------------------------------------- // 静态工具 —— 获取Android应用上下文 // ------------------------------------------------------- public static AndroidJavaObject GetApplicationContext() { using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) using (var jo = jc.GetStatic("currentActivity")) return jo.Call("getApplicationContext"); } } #endif