Version: 2022.3
public IntPtr fnPtr ;

描述

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