将jstring转换成go string,目前我的实现很繁琐。具体是,先将jstring转换为cstring,再转换为go string。

更麻烦的是,我在Go里还没法直接使用JNI的接口,可能是不得要领,只好封装了一个C函数来绕一下,总之很麻烦。

不知道有没有简单的方法?

代码如下:

//#include 

/*

static inline const char* GetStringUTFChars(JNIEnv * env, jstring str) {

return (*env)->GetStringUTFChars(env, str, 0);

}

static inline void ReleaseStringUTFChars(JNIEnv* env, jstring str, const char* chars) {

(*env)->ReleaseStringUTFChars(env, str, chars);

}

*/

import "C"

func get_go_string_from_jstring (env *C.JNIEnv, s C.jstring) string {

chars := C.GetStringUTFChars(env, s)

defer func(){

C.ReleaseStringUTFChars(env, s, chars)

}()

ret, _ := C.GoString(chars)

return ret

}