Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java

来源:互联网 发布:37码半 虎扑卖家 淘宝 编辑:程序博客网 时间:2024/04/29 10:43

转自:http://blog.csdn.net/geolo/article/details/6168310


一、 在JNI中执行Java方法

class AndroidJniDemo {
 private native void executeMethod();
 private void show() {
  System.out.println("Java cwj print"); //执行了show方法后打印java层的输出
 }
 public static void main(String args[]) {  //这里我们在J2SE中测试,Android开发者可以放到Activity中的onCreate调用
  AndroidJniDemo ajd = new AndroidJniDemo();
  ajd.executeMethod(); 
 }
 static {
  System.loadLibrary("AndroidJniDemo");
 }
}

下面是JNI代码:

JNIEXPORT void JNICALL
Java_AndroidJniDemo_executeMethod(JNIEnv *env, jobject obj)
{
 jclass clazz = (*env)->GetObjectClass(env, obj); //通过类的对象
 jmethodID mid = (*env)->GetMethodID(env, clazz, "show", "()V"); //查找java中的show方法的ID,最后的签名符号为void类型
 if (mid == NULL) {
  return;   //如果方法ID没有找到
 }

 printf("JNI cwj print"); //从JNI中打印输出

 (*env)->CallVoidMethod(env, obj, mid); //执行show方法
}