如何在函数参数中将char字符串的值传递给java字符串(JNI到Java)?

时间:2011-04-18 10:24:09

标签: java-native-interface android-ndk

您好我想在android-ndk中将一个字符串从jni传递给java。 假设这是我的原生功能。

private native int myFunc(String buffer);

这是我在jni中的原生函数:

jint Java_com_example_twolibs_myFunc(JNIEnv*  env, jobject  thiz, jstring buffString){
    //I want to pass a character array to buffString from here, that I would read from java as String.
return 0;
}

怎么做?

2 个答案:

答案 0 :(得分:2)

我无法完全解析这个问题。将字符串“传递给java从jni到java”听起来多余。

如果您只想从本机代码获取String的内容,则可以使用JNI GetStringUTFChars获取UTF-8表示。字符串是不可变的,不能直接修改。您可以使用NewStringUTF从native创建一个新String。

请注意,传递给NewStringUTF的字符串数据必须采用“修改后的UTF-8”格式。有关这意味着什么的解释,请参阅JNI文档。

如果您只想传递字符,则可能需要使用char []缓冲区(GetCharArrayElements,ReleaseCharArrayElements)。请注意,Java语言字符是UTF-16,因此“jchar”是无符号的16位值(不要试图将它们视为C ++ 8位“char”)。

答案 1 :(得分:1)

看看这个,告诉你如何将值传递给ndk以及如何在ndk中检索值和执行操作

http://hoodaandroid.blogspot.in/2012/07/working-with-android-ndk-native.html