将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
}