你的位置:首页 > 软件开发 > 操作系统 > Android java传递string类型数据给C

Android java传递string类型数据给C

发布时间:2016-07-01 21:00:08
本文接着实现《Android java传递int类型数据给C》的还未实现的方法:public native String sayHelloInC(String s);先贴一个工具方法,具体意义后面的文章将介绍/** * 把一个jstring转换成一个c语言的char* 类型. * ...

本文接着实现《Android java传递int类型数据给C》的还未实现的方法:

public native String sayHelloInC(String s);

先贴一个工具方法,具体意义后面的文章将介绍

/** * 把一个jstring转换成一个c语言的char* 类型. */char* _JString2CStr(JNIEnv* env, jstring jstr) {  char* rtn = NULL;  jclass clsstring = (*env)->FindClass(env, "java/lang/String");  jstring strencode = (*env)->NewStringUTF(env, "GB2312");  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); //"\0"    memcpy(rtn, ba, alen);    rtn[alen] = 0;  }  (*env)->ReleaseByteArrayElements(env, barr, ba, 0);  return rtn;}

原标题:Android java传递string类型数据给C

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。