bool registerNatives(JNIEnv *env) { jclass appClass = QtAndroid::applicationClass(); GET_AND_CHECK_STATIC_METHOD(m_registerClipboardManagerMethodID, appClass, "registerClipboardManager", "()V"); GET_AND_CHECK_STATIC_METHOD(m_setClipboardTextMethodID, appClass, "setClipboardText", "(Ljava/lang/String;)V"); GET_AND_CHECK_STATIC_METHOD(m_hasClipboardTextMethodID, appClass, "hasClipboardText", "()Z"); GET_AND_CHECK_STATIC_METHOD(m_getClipboardTextMethodID, appClass, "getClipboardText", "()Ljava/lang/String;"); return true; }
bool registerNatives(JNIEnv *env) { jclass appClass = QtAndroid::applicationClass(); if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed"); return false; } GET_AND_CHECK_STATIC_METHOD(m_showSoftwareKeyboardMethodID, appClass, "showSoftwareKeyboard", "(IIIII)V"); GET_AND_CHECK_STATIC_METHOD(m_resetSoftwareKeyboardMethodID, appClass, "resetSoftwareKeyboard", "()V"); GET_AND_CHECK_STATIC_METHOD(m_hideSoftwareKeyboardMethodID, appClass, "hideSoftwareKeyboard", "()V"); GET_AND_CHECK_STATIC_METHOD(m_isSoftwareKeyboardVisibleMethodID, appClass, "isSoftwareKeyboardVisible", "()Z"); GET_AND_CHECK_STATIC_METHOD(m_updateSelectionMethodID, appClass, "updateSelection", "(IIII)V"); 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; }
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; }
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; }