您好我想在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;
}
怎么做?
答案 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