#if UNITY_ANDROID && !UNITY_EDITOR using UnityEngine; public static class AndroidEntryChecker { public enum UnityEntryType { Unknown, Activity, GameActivity } private static UnityEntryType? _cachedType; public static UnityEntryType GetEntryType() { if (_cachedType.HasValue) return _cachedType.Value; using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) using (var activity = unityPlayer.GetStatic("currentActivity")) { string className = activity.Call("getClass") .Call("getName"); if (className.Contains("UnityPlayerGameActivity")) _cachedType = UnityEntryType.GameActivity; else if (className.Contains("UnityPlayerActivity")) _cachedType = UnityEntryType.Activity; else _cachedType = UnityEntryType.Unknown; Debug.Log($"[EntryChecker] Running under: {_cachedType} ({className})"); return _cachedType.Value; } return UnityEntryType.Unknown; } /// /// Determines if AppCompat-based SDKs can run safely. /// private static bool CanUseAppCompat() { var type = GetEntryType(); if (type == UnityEntryType.GameActivity) { Debug.LogWarning("[Unity6SafeEntry] AppCompat SDKs may not work under GameActivity. " + "Consider switching Application Entry to Activity in Player Settings."); return false; } return true; // Safe under Activity } /// /// Fallback safe initialization: disable AppCompat-only SDKs if running under GameActivity. /// public static void InitializeWithFallback(System.Action safeInit, System.Action appCompatInit = null) { if (CanUseAppCompat()) { appCompatInit?.Invoke(); Debug.Log("[Unity6SafeEntry] Initialized AppCompat SDKs under Activity."); } else { safeInit?.Invoke(); Debug.Log("[Unity6SafeEntry] Falling back to safe init (GameActivity mode)."); } } } #endif