The function pointer.
This should be obtained using Marshal.GetFunctionPointerForDelegate, and delegate should refer to a method annotated with MonoPInvokeCallback attribute and having such signature: static ReturnType MyMethod(IntPtr jniEnv, IntPtr objectOrClass, ...);
// Delegate difinition delegate void JavaToCs(IntPtr jniEnv, IntPtr klass, int x);
// Method definition [MonoPInvokeCallback(typeof(JavaToCs))] static void CsMethod(IntPtr jniEnv, IntPtr klass, int x) { Debug.Log("From Java: " + x); }
// Array to be passed to AndroidJNI.RegisterNative var methods = new JNINativeMethod[] { new JNINativeMethod { name = "csMethod", signature = "(I)V", fnPtr = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(new JavaToCs(CsMethod)), } };
// Register method for Java class AndroidJNI.RegisterNatives(clazz, methods);