程序的第12、13行的目的则是创建一个jfieldID类型的变量,在JNI中,操作对 象属性都是通过jfieldID进行的。第12行首先查找得到MailInfo的类型(Class),然后基于这个jclass进一步获取其名为 topic的属性,并将其赋予jfieldID变量。
程序的第18、19行的目的是循环向对象数组中放入jobject对象。 SetObjectField()函数属于首次使用,该函数的作用是向jobject的属性赋值,而值的内容正是Java程序传入的jstring变量 值。请注意在向对象属性赋值和向对象数组中放入对象的过程中,我们使用了在函数头部分定义的jobject类型的环境参数obj作为中介。至此,JNI框 架固有的两个环境入参env和obj,我们都有涉及。
5.传递byte[]
源C
int SmsSend(char *phonenum,char *contnet);
java的native本地
public native static int SmsSend(byte[] mobileNo,byte[] smContent);
JNIEXPORT jint JNICALL Java_Sample5_objectMethod(JNIEnv *env, jclass jobject, jbyteArray mobileno,jbyteArray smscontent){
char *pSmscontent;
//jsize *theArrayLengthJ=(*env)->GetArrayLength(env,mobileno);
jbyte *arrayBody=(*env)->GetByteArrayElements(env,moblieno,0);
char *pMobileNo=(char *)arrayBody;
printf("[%s]\n,pMobileNo);
//jsize *theArrayLengthJ=(*env)->GetArrayLength(env,smscontent);
arrayBody=(*env)->GetByteArrayElements(env,smscontent,0);
pSmscontent=(char *)arrayBody;
printf("[%s]\n,pSmscontent);
return SmsSend(pMobileNo,pSmscontent);
作者“jykenan”