gpt4 book ai didi

java - 在 Android 中从 C++ 调用 getUnicodeChar 方法

转载 作者:行者123 更新时间:2023-11-29 21:37:54 25 4
gpt4 key购买 nike

我需要使用 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;

最佳答案

FindClass 的语法很特别,它需要 the JNI documentation调用“完全限定的类名”,这意味着包名中的点被斜线代替。

在您的情况下,使用:

jclass class_key_event = jni_env->FindClass("android/view/KeyEvent");

应该让你的代码工作,或者至少把它推向正确的方向!

关于java - 在 Android 中从 C++ 调用 getUnicodeChar 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com