Android C 通过JNI 调用JAVA

来源:互联网 发布:sqlite 数据库锁定 编辑:程序博客网 时间:2024/06/11 20:50

花了一天的时间去学习Android 中C 通过JNI 调用JAVA的方法,记录下来,以便以后用到。

C 通过JNI 调用JAVA可分为2种情况

1,调用JAVA中的对象,通过对象调用方法。

步骤:

该文件中需要把Java中的类映射到C中

 把类的方法映射到C中
 新建类对象
 调用方法

2,调用JAVA中的静态方法,静态方法是属于类的。


关键代码,有详细注释

jclass calljclass;calljclass=env->FindClass("com/example/ndktest/CcallJavaClass");//获取类jmethodID  constructorID;//得到构造函数的IDconstructorID=env->GetMethodID(calljclass,"<init>","()V");//得到构造函数的IDjobject  callobject=env->NewObject(calljclass,constructorID);//第一个参数,calljclass表示创建哪个类的实例。//第二个参数,constructorID表示用哪个构造函数创建该类的实例。jmethodID instanceMethodID;instanceMethodID=env->GetMethodID(calljclass,"instanceMethod","()I");jint instanceResult;instanceResult=env->CallIntMethod(callobject,instanceMethodID);jmethodID staticMethodID;//获取类的静态方法ID;staticMethodID=env->GetStaticMethodID(calljclass,"staticMethod","()I");jint methodResult;//通过方法ID调用方法methodResult =env->CallStaticIntMethod(calljclass,staticMethodID);if(instanceResult==10)return env->NewStringUTF("CcallJavaClass  instance");//if(methodResult==20)//return env->NewStringUTF("CcallJavaClass  static");



0 0
原创粉丝点击