我需要我在 C++ 代码上的 Android 软键盘上按下的键的 unicode 值,但看起来 NativeActivity 没有公开“getUnicodeChar”方法。所以我尝试用 JNI 调用它,但该函数的 GetMethodID 返回“0”。这是我第一次使用 JNI,所以我可能做错了什么。我想我必须以某种方式将我的“AInputEvent”交给Java,但我不确定如何。这是我写的代码:
JavaVM* java_vm = and_app->activity->vm; 
JNIEnv* jni_env = and_app->activity->env; 
JavaVMAttachArgs attach_args; 
attach_args.version = JNI_VERSION_1_6; 
attach_args.name = "NativeThread"; 
attach_args.group = NULL; 
jint result = java_vm->AttachCurrentThread(&jni_env, &attach_args); 
if(result == JNI_ERR)
{ 
    return 0;
}
jclass class_key_event = jni_env->FindClass("android.view.KeyEvent");
jmethodID method_get_unicode_char = jni_env->GetMethodID(class_key_event, "getUnicodeChar", "()I");
int return_key = jni_env->CallIntMethod(class_key_event, method_get_unicode_char);
java_vm->DetachCurrentThread();
return return_key;