/// <summary> /// This API makes a call to a method on an Object by passing the specified parameters and returns an object of type AndroidJavaObject /// </summary> /// <param name="androidJavaObject"></param> /// <param name="methodName"></param> /// <param name="parameters"></param> /// <returns></returns> public static object CallMethod(object androidJavaObject, string methodName, params object[] parameters) { Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject"); var method = androidJavaObject.GetType().GetMethods() .Where(x => x.Name == "Call") .First(x => x.ContainsGenericParameters); var genericMethod = method.MakeGenericMethod(androidJavaObjectType); return(genericMethod.Invoke(androidJavaObject, new object[] { methodName, parameters })); }
public static object CallMethod(object androidJavaObject, string methodName, params object[] parameters) { Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject"); return((from x in androidJavaObject.GetType().GetMethods() where x.Name == "Call" select x).First((MethodInfo x) => x.ContainsGenericParameters).MakeGenericMethod(typeFromUnityEngine).Invoke(androidJavaObject, new object[2] { methodName, parameters })); }
/// <summary> /// The API makes a call to a static java method on a class and returns a typed parameter /// </summary> /// <typeparam name="T"></typeparam> /// <param name="className"></param> /// <param name="methodName"></param> /// <param name="parameters"></param> /// <returns></returns> public static T CallStaticJavaMethod <T>(string className, string methodName, params object[] parameters) { Type androidJavaClassType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); if (androidJavaClassType != null) { var javaUnityHelper = Activator.CreateInstance(androidJavaClassType, className); var callStaticMethod = androidJavaClassType.GetMethods() .Where(x => x.Name == "CallStatic") .FirstOrDefault(); if (callStaticMethod != null) { return((T)callStaticMethod.Invoke(javaUnityHelper, new object[] { methodName, parameters })); } } return(default(T)); }
/// <summary> /// This API returns a value of type AndroidJavaObject from a static field /// </summary> /// <param name="className"></param> /// <param name="methodName"></param> /// <returns></returns> public static object GetStaticJavaField(string className, string methodName) { Type androidJavaClassType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject"); if (androidJavaClassType != null) { var javaUnityHelper = Activator.CreateInstance(androidJavaClassType, className); var staticGetter = androidJavaClassType.GetMethod("GetStatic"); var genericGetter = staticGetter.MakeGenericMethod(androidJavaObjectType); if (genericGetter != null) { return(genericGetter.Invoke(javaUnityHelper, new object[] { methodName })); } } return(null); }
/// <summary> /// The API makes a call to a static java method on a class and returns an object of Type AndroidJavaObject /// </summary> /// <param name="className"></param> /// <param name="methodName"></param> /// <returns></returns> public static object GetJavaObjectStatically(string className, string methodName) { Type androidJavaClassType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); Type androidJavaObjectType = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject"); if (androidJavaClassType != null) { var javaClass = Activator.CreateInstance(androidJavaClassType, className); var callStaticMethod = androidJavaClassType.GetMethods() .Where(x => x.Name == "CallStatic") .First(x => x.ContainsGenericParameters); var genericStaticMethod = callStaticMethod.MakeGenericMethod(androidJavaObjectType); return(genericStaticMethod.Invoke(javaClass, new object[] { methodName, new object[] { } })); } return(null); }
public static T GetStaticJavaField <T>(string className, string methodName) { Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); if (typeFromUnityEngine != null) { object obj = Activator.CreateInstance(typeFromUnityEngine, className); MethodInfo methodInfo = typeFromUnityEngine.GetMethod("GetStatic").MakeGenericMethod(typeof(T)); if (methodInfo != null) { return((T)methodInfo.Invoke(obj, new object[1] { methodName })); } } return(default(T)); }
public static object GetJavaObjectStatically(string className, string methodName) { Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); Type typeFromUnityEngine2 = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaObject"); if (typeFromUnityEngine != null) { object obj = Activator.CreateInstance(typeFromUnityEngine, className); return((from x in typeFromUnityEngine.GetMethods() where x.Name == "CallStatic" select x).First((MethodInfo x) => x.ContainsGenericParameters).MakeGenericMethod(typeFromUnityEngine2).Invoke(obj, new object[2] { methodName, new object[0] })); } return(null); }
public static T CallStaticJavaMethod <T>(string className, string methodName, params object[] parameters) { Type typeFromUnityEngine = InternalSDKUtils.GetTypeFromUnityEngine("AndroidJavaClass"); if (typeFromUnityEngine != null) { object obj = Activator.CreateInstance(typeFromUnityEngine, className); MethodInfo methodInfo = (from x in typeFromUnityEngine.GetMethods() where x.Name == "CallStatic" select x).FirstOrDefault(); if (methodInfo != null) { return((T)methodInfo.Invoke(obj, new object[2] { methodName, parameters })); } } return(default(T)); }