Fix 2 bugs with virtual-keyboard input on Android which could both lead to crashes.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@5061 dfc29bdd-3216-0410-991c-e03cc46cb475
master
cutealien 2015-03-02 16:05:20 +00:00
parent b0217b078d
commit 54d361d5c0
2 changed files with 9 additions and 3 deletions

View File

@ -137,7 +137,8 @@ void setSoftInputVisibility(android_app* app, bool visible)
{
// Get all the methods we want to access from the JVM classes (could be cached)
jmethodID mid_getSystemService = jni->GetMethodID(classNativeActivity, "getSystemService","(Ljava/lang/String;)Ljava/lang/Object;");
jmethodID mid_showSoftInput = jni->GetMethodID(classInputMethodManager, "showSoftInput", "(Landroid/view/View;I)Z");
jmethodID mid_showSoftInput = jni->GetMethodID(classInputMethodManager, "showSoftInput", "(Landroid/view/View;I)Z");
jmethodID mid_hideSoftInput = jni->GetMethodID(classInputMethodManager, "hideSoftInputFromWindow", "(Landroid/os/IBinder;I)Z");
jmethodID mid_getWindow = jni->GetMethodID(classNativeActivity, "getWindow", "()Landroid/view/Window;");
jmethodID mid_getWindowToken = jni->GetMethodID(classView, "getWindowToken", "()Landroid/os/IBinder;");
@ -157,7 +158,7 @@ void setSoftInputVisibility(android_app* app, bool visible)
if ( objDecorView )
{
int showFlags = 0;
jni->CallObjectMethod(objInputMethodManager, mid_showSoftInput, objDecorView, showFlags);
jni->CallBooleanMethod(objInputMethodManager, mid_showSoftInput, objDecorView, showFlags);
}
}
else if ( !visible && objInputMethodManager && objWindow )

View File

@ -25,7 +25,12 @@ CKeyEventWrapper::CKeyEventWrapper(JNIEnv* jniEnv, int action, int code)
{
// Find java classes & functions on first call
os::Printer::log("CKeyEventWrapper first initialize", ELL_DEBUG);
Class_KeyEvent = JniEnv->FindClass("android/view/KeyEvent");
jclass localClass = JniEnv->FindClass("android/view/KeyEvent");
if (localClass)
{
Class_KeyEvent = reinterpret_cast<jclass>(JniEnv->NewGlobalRef(localClass));
}
Method_constructor = JniEnv->GetMethodID(Class_KeyEvent, "<init>", "(II)V");
Method_getUnicodeChar = JniEnv->GetMethodID(Class_KeyEvent, "getUnicodeChar", "(I)I");
}