jint JNICALL JNI_OnLoad(JavaVM *vm, void *ld) { Q_UNUSED(ld) __android_log_print(ANDROID_LOG_INFO, "Qt", "Qt Android service wrapper start"); JNIEnv* env; if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) { __android_log_print(ANDROID_LOG_FATAL, "Qt", "Can't get env in wrapper start"); \ return -1; } m_javaVM = vm; jclass clazz; FIND_AND_CHECK_CLASS("land/aseman/android/AsemanServiceDelegate"); m_applicationClass = static_cast<jclass>(env->NewGlobalRef(clazz)); __android_log_print(ANDROID_LOG_INFO, "Qt", "Registering native classes for service wrapper"); if (env->RegisterNatives(m_applicationClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed for service wrapper"); return JNI_FALSE; } return JNI_VERSION_1_4; }
static bool registerNatives(JNIEnv *env) { jclass clazz; FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothBroadcastReceiver"); if (env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for BraodcastReceiver failed"); return false; } FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothSocketServer"); if (env->RegisterNatives(clazz, methods_server, sizeof(methods_server) / sizeof(methods_server[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for SocketServer failed"); return false; } FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/bluetooth/QtBluetoothInputStreamThread"); if (env->RegisterNatives(clazz, methods_inputStream, sizeof(methods_inputStream) / sizeof(methods_inputStream[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives for InputStreamThread failed"); return false; } return true; }
int AndroidAssetsFileEngineHandler::registerNatives(JNIEnv *env) { __android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, "in registerNatives"); if (env == NULL) return JNI_FALSE; if (g_assetManager == NULL) { jclass clazz; FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/QtNative"); g_applicationClass = static_cast<jclass>(env->NewGlobalRef(clazz)); jmethodID methodID; GET_AND_CHECK_STATIC_METHOD(methodID, g_applicationClass, "activity", "()Landroid/app/Activity;"); jobject objActivity = env->CallStaticObjectMethod(g_applicationClass, methodID); clazz = env->GetObjectClass(objActivity); GET_AND_CHECK_METHOD(methodID, clazz, "getPackageCodePath", "()Ljava/lang/String;"); jobject objPackageCodePath = env->CallObjectMethod(objActivity, methodID); const char *jstrPackageCodePath; jboolean isCopy = JNI_FALSE; jstrPackageCodePath = env->GetStringUTFChars((jstring) objPackageCodePath, &isCopy); g_strPackageCodePath = QString::fromUtf8(jstrPackageCodePath); __android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, QString("PackageCodePath: %1").arg(AndroidAssetsFileEngineHandler::packageCodePath()).toUtf8().data()); FIND_AND_CHECK_CLASS("android/content/ContextWrapper"); GET_AND_CHECK_METHOD(methodID, clazz, "getAssets", "()Landroid/content/res/AssetManager;"); g_assetManager = AAssetManager_fromJava(env, env->CallObjectMethod(objActivity, methodID)); if (g_assetManager == NULL) { __android_log_print(ANDROID_LOG_FATAL, g_kjpbsTag, "assetManager_fromJava returned NULL"); } //// QAndroidJniObject //// GET_AND_CHECK_STATIC_METHOD(methodID, m_applicationClass, "activity", "()Landroid/app/Activity;"); //// jobject activityObject = env->CallStaticObjectMethod(m_applicationClass, methodID); // // QAndroidJniObject activityObject("android/app/Activity"); // jclass clazz = env->FindClass("android/content/ContextWrapper"); // methodID = env->GetMethodID(clazz, "getAssets", "()Landroid/content/res/AssetManager;"); // g_assetManager = AAssetManager_fromJava(env, env->CallObjectMethod(activityObject.object<jobject>(), methodID)); } __android_log_print(ANDROID_LOG_INFO, g_kjpbsTag, "registerNatives complete"); return JNI_TRUE; }
bool registerNatives(JNIEnv *env) { if (QtAndroidPrivate::androidSdkVersion() < 16) return true; // We need API level 16 or higher jclass clazz; FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/accessibility/QtNativeAccessibility"); jclass appClass = static_cast<jclass>(env->NewGlobalRef(clazz)); if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL,"Qt A11y", "RegisterNatives failed"); return false; } jclass nodeInfoClass = env->FindClass("android/view/accessibility/AccessibilityNodeInfo"); GET_AND_CHECK_STATIC_METHOD(m_addActionMethodID, nodeInfoClass, "addAction", "(I)V"); GET_AND_CHECK_STATIC_METHOD(m_setCheckableMethodID, nodeInfoClass, "setCheckable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setCheckedMethodID, nodeInfoClass, "setChecked", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setClickableMethodID, nodeInfoClass, "setClickable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setContentDescriptionMethodID, nodeInfoClass, "setContentDescription", "(Ljava/lang/CharSequence;)V"); GET_AND_CHECK_STATIC_METHOD(m_setEnabledMethodID, nodeInfoClass, "setEnabled", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setFocusableMethodID, nodeInfoClass, "setFocusable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setFocusedMethodID, nodeInfoClass, "setFocused", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setScrollableMethodID, nodeInfoClass, "setScrollable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setVisibleToUserMethodID, nodeInfoClass, "setVisibleToUser", "(Z)V"); if (QtAndroidPrivate::androidSdkVersion() >= 18) { GET_AND_CHECK_STATIC_METHOD(m_setTextSelectionMethodID, nodeInfoClass, "setTextSelection", "(II)V"); } return true; }
static bool registerNatives(JNIEnv *env) { jclass clazz; FIND_AND_CHECK_CLASS("org/KangLinStudio/RabbitIm/RabbitImActivity"); RabbitImActivityClass = static_cast<jclass>(env->NewGlobalRef(clazz)); if (env->RegisterNatives(RabbitImActivityClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { LOG_MODEL_ERROR("CAndroidNotification", "RegisterNatives failed"); return JNI_FALSE; } return true; }
bool registerNatives(JNIEnv *env) { jclass clazz = QJNIEnvironmentPrivate::findClass(QtMessageHandlerHelperClassName, env); if (!clazz) { __android_log_print(ANDROID_LOG_FATAL, QtAndroid::qtTagText(), QtAndroid::classErrorMsgFmt() , QtMessageHandlerHelperClassName); return false; } g_messageDialogHelperClass = static_cast<jclass>(env->NewGlobalRef(clazz)); FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/QtNativeDialogHelper"); jclass appClass = static_cast<jclass>(env->NewGlobalRef(clazz)); if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL, "Qt", "RegisterNatives failed"); return false; } return true; }
static bool registerNatives(JNIEnv *env) { jclass clazz; FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/sensors/QtSensors"); sensorsClass = static_cast<jclass>(env->NewGlobalRef(clazz)); if (env->RegisterNatives(sensorsClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL, logTag, "RegisterNatives failed"); return JNI_FALSE; } GET_AND_CHECK_STATIC_METHOD(getSensorListMethodId, sensorsClass, "getSensorList", "()[I"); GET_AND_CHECK_STATIC_METHOD(registerSensorMethodId, sensorsClass, "registerSensor", "(II)Z"); GET_AND_CHECK_STATIC_METHOD(unregisterSensorMethodId, sensorsClass, "unregisterSensor", "(I)Z"); GET_AND_CHECK_STATIC_METHOD(getSensorDescriptionMethodId, sensorsClass, "getSensorDescription", "(I)Ljava/lang/String;"); GET_AND_CHECK_STATIC_METHOD(getSensorMaximumRangeMethodId, sensorsClass, "getSensorMaximumRange", "(I)F"); GET_AND_CHECK_STATIC_METHOD(getCompassAzimuthId, sensorsClass, "getCompassAzimuth", "(FFFFFF)F"); return true; }