java - 从 Java 发送到 JNI 的参数未发送

标签 java android java-native-interface

我已经阅读了有关如何将参数从 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/

相关文章:

android - 方向改变时随机数也会改变

android - 谷歌API支付-安卓

apache-spark - 如何将自定义库部署到 Apache Spark?

java - 如何改变JFrame的背景颜色

java - Spring - 属性 'name' 不允许出现在元素 'constructor-arg' 中

android - ActionBar 中的选项卡

java - jni入门问题

java - servlet 是否共享同一个 servletoutputstream 对象?

java - 搜索对象数组

java - 谁在 Java 中实现操作系统接口(interface)?