1:NewGlobalRef
extern "C"
JNIEXPORT jboolean JNICALL
Java_com_wkq_jnidemo_JniUtil_HancNetInit(JNIEnv *env, jclass clazz, jobject test) {
env->GetJavaVM(&jvm);
myTest = (jobject) env->NewGlobalRef(test);
back();
return HancNetSDK_Init();
}
2:GetObjectClass
jobject myTest;
static JavaVM *jvm;
void back() {
JNIEnv *env;
jvm->AttachCurrentThread(&env, NULL);
//找到接口類
jclass jSdkClass = env->GetObjectClass(myTest);
//找到接口類方法,第三個參數是方法簽名
jmethodID javaCallback = env->GetMethodID(jSdkClass, "getX", "(Z)V");
//進行回調
env->CallVoidMethod(myTest, javaCallback, true);
}
3:最后注意方法前后順序,被調用者代碼一定在上面
jobject myTest;
static JavaVM *jvm;
void back() {
JNIEnv *env;
jvm->AttachCurrentThread(&env, NULL);
//找到接口類
jclass jSdkClass = env->GetObjectClass(myTest);
//找到接口類方法,第三個參數是方法簽名
jmethodID javaCallback = env->GetMethodID(jSdkClass, "getX", "(Z)V");
//進行回調
env->CallVoidMethod(myTest, javaCallback, true);
}
extern "C"
JNIEXPORT jboolean JNICALL
Java_com_wkq_jnidemo_JniUtil_HancNetInit(JNIEnv *env, jclass clazz, jobject test) {
env->GetJavaVM(&jvm);
myTest = (jobject) env->NewGlobalRef(test);
back();
return HancNetSDK_Init();
}