1. 程式人生 > >JNI開發:傳遞和返回String型別案例

JNI開發:傳遞和返回String型別案例

          此篇以案例來講解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);
}