protected ReturnType _CallStatic <ReturnType>(string methodName, params object[] args) { ReturnType local; if (args == null) { args = new object[1]; } IntPtr methodID = AndroidJNIHelper.GetMethodID <ReturnType>(this.m_jclass, methodName, args, true); jvalue[] jvalueArray = AndroidJNIHelper.CreateJNIArgArray(args); try { if (AndroidReflection.IsPrimitive(typeof(ReturnType))) { if (typeof(ReturnType) == typeof(int)) { return((ReturnType)AndroidJNISafe.CallStaticIntMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(bool)) { return((ReturnType)AndroidJNISafe.CallStaticBooleanMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(byte)) { return((ReturnType)AndroidJNISafe.CallStaticByteMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(short)) { return((ReturnType)AndroidJNISafe.CallStaticShortMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(long)) { return((ReturnType)AndroidJNISafe.CallStaticLongMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(float)) { return((ReturnType)AndroidJNISafe.CallStaticFloatMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(double)) { return((ReturnType)AndroidJNISafe.CallStaticDoubleMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(char)) { return((ReturnType)AndroidJNISafe.CallStaticCharMethod(this.m_jclass, methodID, jvalueArray)); } } else { if (typeof(ReturnType) == typeof(string)) { return((ReturnType)AndroidJNISafe.CallStaticStringMethod(this.m_jclass, methodID, jvalueArray)); } if (typeof(ReturnType) == typeof(AndroidJavaClass)) { return((ReturnType)AndroidJavaClassDeleteLocalRef(AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, jvalueArray))); } if (typeof(ReturnType) == typeof(AndroidJavaObject)) { return((ReturnType)AndroidJavaObjectDeleteLocalRef(AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, jvalueArray))); } if (!AndroidReflection.IsAssignableFrom(typeof(Array), typeof(ReturnType))) { throw new Exception("JNI: Unknown return type '" + typeof(ReturnType) + "'"); } return(AndroidJNIHelper.ConvertFromJNIArray <ReturnType>(AndroidJNISafe.CallStaticObjectMethod(this.m_jclass, methodID, jvalueArray))); } local = default(ReturnType); } finally { AndroidJNIHelper.DeleteJNIArgArray(args, jvalueArray); } return(local); }