1、获取函数ID
JNI的GetMethodID函数获取一个jmethodID时,需要传入一个方法名称和方法签名,方法名称就是在Java中定义的方法名,方法签名的格式为:(形参参数类型列表)返回值。
const char method_class_from_java[] = "org/webrtc/examples/androidnativeapi/IpeerConnectionClientObserver";
jclass jSdkClass =(*env).FindClass(method_class_from_java);
//jclass jSdkClass =(*env).GetObjectClass(j_listener.obj());
if (jSdkClass == 0) {
RTC_LOG(INFO) << "not class ";
return;
}
//找到需要调用的方法ID
//OnSignedIn_ = (*env).GetMethodID( jSdkClass,"OnSignedIn", "([Ljava/lang/String;)V");
jmethodID OnSignedIn_ = (*env).GetMethodID( jSdkClass,"OnSignedIn", "(Ljava/util/HashMap;)V");
if(!OnSignedIn_)
{
RTC_LOG(INFO) << "not function ";
}
参考表一:
Method Descriptor |
Java Language Type |
“()Ljava/lang/String;” |
String f() |
“(ILjava/lang/Class;)J” |
long f(int I, Class c) |
“([B)V” |
void f(byte[] bytes) V:返回void,[:数组 |
参考表二: