我已经阅读了有关如何将参数从 Java 发送到 JNI 函数的内容。我第一次尝试发送 ArrayList 因为我试图获取 Android 电话簿。
在解决了很多问题之后,我变得很简单,可以完全确定正在发送一个简单的参数(字符串)。
这是我的函数的 Java 声明:
public static native void nativeCallback(String params);
这是 JNI 函数:
JNIEXPORT void JNICALL
Java_example_nativeCallback(JNIEnv* env,jstring params)
我检查并发现该函数正在被调用。我用它来查看是否确实有一个字符串正在发送:
int sizeOfChain = env->GetStringLenght(params);
std::ostringstream convert;
convert<<sizeOfChain;
convert.flush();
std::string finalString = convert.str();
打印finalString时,它是0。
这是从 Java 调用该函数的方式:
nativeCallback("TEST_STRING");
此外,发送 ArrayList 与 jobjectArray 一样有效吗?
最佳答案
尝试这样做以从 jstring 中获取 C 字符串
const char *str= env->GetStringUTFChars(params, NULL);
printf("String: %s\n", str);
env->ReleaseStringUTFChars(params, str);
关于java - 从 Java 发送到 JNI 的参数未发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089569/