Reprint Please specify source: http://blog.csdn.net/l1028386804/article/details/47002207
1. Convert Java string to C + + string
/** * Tool Method * Convert Java String to C + + String * Returns the first address of an array of strings */char* Jstring2cppstr (jnienv* env, jstring jstr, jstring encode) {char* RTN = N Ull;jclass clsstring = Env->findclass ("java/lang/string"); jstring Strencode = Env->newstringutf (encode); Jmethodid mid = Env->getmethodid (clsstring, "GetBytes", "(ljava/lang/string;) [B"); Jbytearray Barr = (Jbytearray) Env->callobjectmethod (Jstr, Mid,strencode); String. GetByte ("GB2312"); Jsize alen = Env->getarraylength (Barr); jbyte* ba = Env->getbytearrayelements (Barr, Jni_false); if (Alen > 0) {rtn = (char*) malloc (alen + 1);//"memcpy" (RTN, BA, Alen); Rtn[alen] = 0;} Env->releasebytearrayelements (Barr, BA, 0); return RTN;}
2. Convert Java string to C string
/** * Tool Method * Converts a Java string to a C string * Returns the first address of an array of strings */char* Jstring2cstr (jnienv* env, jstring jstr, jstring encode) {char* RTN = NULL; Jclass clsstring = (*env)->findclass (env, "java/lang/string"); jstring Strencode = (*env)->newstringutf (env, encode); Jmethodid mid = (*env)->getmethodid (env, clsstring, "GetBytes", "(ljava/lang/string;) [B"); Jbytearray Barr = (Jbytearray) (*env)->callobjectmethod (env, JSTR, Mid,strencode); String. GetByte ("GB2312"); Jsize alen = (*env)->getarraylength (env, Barr); jbyte* ba = (*env) Getbytearrayelements (env, Barr, Jni_false); if (Alen > 0) {rtn = (char*) malloc (alen + 1);//"memcpy" (RTN, BA, Alen); r Tn[alen] = 0;} (*env)->releasebytearrayelements (env, Barr, BA, 0); return RTN;}
Warm tip: You can get the complete JNI invocation sample code to the link http://download.csdn.net/detail/l1028386804/8922611
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Android--jni Universal Tool method