jint QtAndroidPrivate::initJNI(JavaVM *vm, JNIEnv *env) { jclass jQtNative = env->FindClass("org/qtproject/qt5/android/QtNative"); if (exceptionCheck(env)) return JNI_ERR; jmethodID activityMethodID = env->GetStaticMethodID(jQtNative, "activity", "()Landroid/app/Activity;"); if (exceptionCheck(env)) return JNI_ERR; jobject activity = env->CallStaticObjectMethod(jQtNative, activityMethodID); if (exceptionCheck(env)) return JNI_ERR; jmethodID classLoaderMethodID = env->GetStaticMethodID(jQtNative, "classLoader", "()Ljava/lang/ClassLoader;"); if (exceptionCheck(env)) return JNI_ERR; jobject classLoader = env->CallStaticObjectMethod(jQtNative, classLoaderMethodID); if (exceptionCheck(env)) return JNI_ERR; setAndroidSdkVersion(env); g_jClassLoader = env->NewGlobalRef(classLoader); env->DeleteLocalRef(classLoader); g_jActivity = env->NewGlobalRef(activity); env->DeleteLocalRef(activity); g_javaVM = vm; static const JNINativeMethod methods[] = { {"onAndroidUiThread", "(J)V", reinterpret_cast<void *>(onAndroidUiThread)} }; const bool regOk = (env->RegisterNatives(jQtNative, methods, sizeof(methods) / sizeof(methods[0])) == JNI_OK); if (!regOk && exceptionCheck(env)) return JNI_ERR; g_runQtOnUiThreadMethodID = env->GetStaticMethodID(jQtNative, "runQtOnUiThread", "(J)V"); g_jNativeClass = static_cast<jclass>(env->NewGlobalRef(jQtNative)); env->DeleteLocalRef(jQtNative); return JNI_OK; }
jint QtAndroidPrivate::initJNI(JavaVM *vm, JNIEnv *env) { jclass jQtNative = env->FindClass("org/qtproject/qt5/android/QtNative"); if (env->ExceptionCheck()) { env->ExceptionClear(); return JNI_ERR; } jmethodID activityMethodID = env->GetStaticMethodID(jQtNative, "activity", "()Landroid/app/Activity;"); if (exceptionCheck(env)) return JNI_ERR; jobject activity = env->CallStaticObjectMethod(jQtNative, activityMethodID); if (exceptionCheck(env)) return JNI_ERR; jmethodID classLoaderMethodID = env->GetStaticMethodID(jQtNative, "classLoader", "()Ljava/lang/ClassLoader;"); if (exceptionCheck(env)) return JNI_ERR; jobject classLoader = env->CallStaticObjectMethod(jQtNative, classLoaderMethodID); if (exceptionCheck(env)) return JNI_ERR; setAndroidSdkVersion(env); g_jClassLoader = env->NewGlobalRef(classLoader); env->DeleteLocalRef(classLoader); g_jActivity = env->NewGlobalRef(activity); env->DeleteLocalRef(activity); g_javaVM = vm; return JNI_OK; }