| 73 | } |
| 74 | |
| 75 | int closeKeyboardIME() |
| 76 | { |
| 77 | ANativeActivity* activity = sf::getNativeActivity(); |
| 78 | JavaVM* vm = activity->vm; |
| 79 | JNIEnv* env = activity->env; |
| 80 | JavaVMAttachArgs attachargs; |
| 81 | attachargs.version = JNI_VERSION_1_6; |
| 82 | attachargs.name = "NativeThread"; |
| 83 | attachargs.group = nullptr; |
| 84 | jint res = vm->AttachCurrentThread(&env, &attachargs); |
| 85 | if (res == JNI_ERR) |
| 86 | return EXIT_FAILURE; |
| 87 | |
| 88 | jclass natact = env->FindClass("android/app/NativeActivity"); |
| 89 | jclass context = env->FindClass("android/content/Context"); |
| 90 | |
| 91 | jfieldID fid = env->GetStaticFieldID(context, "INPUT_METHOD_SERVICE", "Ljava/lang/String;"); |
| 92 | jobject svcstr = env->GetStaticObjectField(context, fid); |
| 93 | |
| 94 | jmethodID getss = env->GetMethodID(natact, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;"); |
| 95 | jobject imm_obj = env->CallObjectMethod(activity->clazz, getss, svcstr); |
| 96 | |
| 97 | jclass imm_cls = env->GetObjectClass(imm_obj); |
| 98 | jmethodID toggleSoftInput = env->GetMethodID(imm_cls, "toggleSoftInput", "(II)V"); |
| 99 | |
| 100 | env->CallVoidMethod(imm_obj, toggleSoftInput, 1, 0); |
| 101 | |
| 102 | env->DeleteLocalRef(imm_obj); |
| 103 | env->DeleteLocalRef(imm_cls); |
| 104 | env->DeleteLocalRef(svcstr); |
| 105 | env->DeleteLocalRef(context); |
| 106 | env->DeleteLocalRef(natact); |
| 107 | |
| 108 | vm->DetachCurrentThread(); |
| 109 | |
| 110 | return EXIT_SUCCESS; |
| 111 | } |
| 112 | |
| 113 | #endif |
| 114 | #endif |