JNI开发:传递和返回String类型案例

           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);
}


猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/80977247