您的位置:首页 > 移动开发 > Android开发

[android底层]jni中获取自定义的类函数编写 推荐

2014-06-05 20:33 471 查看
本案例中编写 android app中对应的[b]j[b]ni函数[/b][/b]
static native Student getStudent();


jni中获取自定义的类函数描述定向总结

定义一个char *指向自定义类




1、返回类型:jobject



2、获取自定义的类



3、通过自定义类的构造函数在jni中构建jobject类:获取方法的域id的描述符填写"<init>"



4、jni回调app中的特定方法来设置自定义对象



或者不使用回调来设置对象属性;set***Field



5、最后返回jobject对象



完整代码
const char * jnistudentname = "com/jniacpp/Student";
jobject getStudent(JNIEnv *env, jobject thiz){
jclass stuClass = env->FindClass(jnistudentname);
//取得构造方法的域id
jmethodID constuctId = env->GetMethodID(stuClass, "<init>", "()V");
// 构建obj对象
jobject stuObj = env->NewObject(stuClass, constuctId);

//取得特定方法的域id
jmethodID setStudentId = env->GetMethodID(stuClass, "setStudent", "(ILjava/lang/String;Z)V");
//调用app中的setStuudent函数
env->CallVoidMethod(stuObj, setStudentId, "110917010", "mrzhang", true);

/*
//取得各个属性的域id;
jfieldID nameID = env->GetFieldID(stuClass, "name", "Ljava/lang/String;");
jfieldID idID = env->GetFieldID(stuClass, "id", "I");
jfieldID isBoyID = env->GetFieldID(stuClass, "isBoy", "Z");
env->SetIntField(stuObj, nameID, 21);
env->SetObjectField(stuObj, nameID, env->NewStringUTF("zhang sir"));
env->SetIntField(stuObj, isBoyID, true);
*/
return stuObj;
}


参考电子书

Android技术之JNI和HAL.pdf

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jni android