JNI简单的int类型传递参考:Android的NDK项目开发案例
此篇以案例来讲解JNI传递String参数并返回String返回值开发,Java函数传递“牛八少爷”到C/C++函数,C/C++函数给字符串追加“欢迎你!”,并返回追加后的字符串到java的函数;
主要代码如下:
java的native方法:
/**
* JNI传递String参数并返回String返回值
*
* @param contentStr
* @return
*/
public native String strAppend(String contentStr);
C/C++的函数:
JNIEXPORT jstring JNICALL Java_com_niubashaoye_ndk_jni_JNITools_strAppend(
JNIEnv *env, jobject obj, jstring contentStr) {
//获取字符串指针,必须使用指针,不能使用char strContent[],因为GetStringUTFChars()返回值为const char *;
const char *strContent = env->GetStringUTFChars(contentStr, JNI_FALSE);
char str[] = "欢迎你的到来!";
//字符串拼接,实现strContent+str1,因为strcat的第一个参数必须为非const类型(可变),所以不能直接使用strcat()
//创建一个新的字符串指针
char *strTemp = (char *) malloc(strlen(strContent) + strlen(str) + 1);
//拷贝常量到字符串指针
strcpy(strTemp,strContent);
//拼接str1到strTemp
strcat(strTemp,str);
//返回一个utf的jstring
return env->NewStringUTF(strTemp);
}