/// <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 }));
}