#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