jstring -> const char *
const char *path = env->GetStringUTFChars(path_, 0);
env->ReleaseStringUTFChars(pushUrl_, pushUrl);
根据jobject获取jclass(静态方法就不用这一步了)
jclass clz = env->GetObjectClass(jobj);
获取jmethodid
jmethodid jmid = env->GetMethodID(clz, "onError", "(ILjava/lang/String;)V")
调用方法
jenv->CallVoidMethod(jobj, jmid, code, jmsg)
char * ---> jstring
jstring str = env->NewStringUTF("Im godv !");
jniEnv->DeleteLocalRef(jmsg);
jbyteArray ---> jbyte *
jbyte *sps = env->GetByteArrayElements(sps_, NULL);
获取全局jobj
this->jobj = jniEnv->NewGlobalRef(*jobj);
获取jclass
jclass jlz = jniEnv->GetObjectClass(this->jobj);
获取对应方法的jmid
jmid_connecting = jniEnv->GetMethodID(jlz, "onConnecting", "()V");
通过jvm得到env 当前线程的env
if (javaVm->AttachCurrentThread(&jniEnv, 0) != JNI_OK) {
return;
}
调用java方法
jniEnv->CallVoidMethod(jobj,jmid_connecting);
释放当前线程
javaVm->DetachCurrentThread();