Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258120
  • 博文数量: 164
  • 博客积分: 60
  • 博客等级: 民兵
  • 技术积分: 1129
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 21:55
文章分类

全部博文(164)

文章存档

2017年(2)

2015年(67)

2014年(95)

我的朋友

分类: Android平台

2015-03-30 22:25:13

原理: 和反射一样

TODU:

点击(此处)折叠或打开

  1. //让c代码去调用java代码去发送一条短信。
  2. void Java_com_itheima_calljava_DataProvider_callCMethod
  3.   (JNIEnv * env, jobject obj){

  4.     //1.找到 java里面的一个class
  5.     jclass clazz = (*env)->FindClass(env,"com/itheima/calljava/DataProvider");
  6.     //2.找到class里面的一个方法
  7.     jmethodID methodID = (*env)->GetMethodID(env,clazz,"methodInJava","()V");
  8.     //3.调用class里面的这个方法。
  9.     (*env)->CallVoidMethod(env,obj,methodID);

  10. }


  11. //让c代码去调用java代码去发送一条短信。
  12. void Java_com_itheima_calljava_DataProvider_callCMethod02
  13.   (JNIEnv * env, jobject obj){ //obj DataProvider

  14.     //1.找到 java里面的一个class
  15.     jclass clazz = (*env)->FindClass(env,"com/itheima/calljava/DataProvider");
  16.     //2.找到class里面的一个方法
  17.     jmethodID methodID = (*env)->GetMethodID(env,clazz,"methodInJava02","(Ljava/lang/String;)Ljava/lang/String;");
  18.     //3.调用class里面的这个方法。
  19.     (*env)->CallObjectMethod(env,obj,methodID,(*env)->NewStringUTF(env," zhangsan "));

  20. }


  21.  void Java_com_itheima_calljava_MainActivity_callMethodInC03
  22.   (JNIEnv * env, jobject obj){//mainactiviy的对象
  23.         //1.找到 java里面的一个class
  24.         jclass clazz = (*env)->FindClass(env,"com/itheima/calljava/DataProvider");
  25.         //2.找到class里面的一个方法
  26.         jmethodID methodID = (*env)->GetMethodID(env,clazz,"methodInJava02","(Ljava/lang/String;)Ljava/lang/String;");
  27.         //3.调用class里面的这个方法。
  28.         jobject jobj = (*env)->AllocObject(env,clazz);
  29.         (*env)->CallObjectMethod(env,jobj,methodID,(*env)->NewStringUTF(env," zhangsan "));
  30.  }



  31.  //让c代码去调用java代码去发送一条短信。
  32.  void Java_com_itheima_calljava_DataProvider_callCMethod04
  33.    (JNIEnv * env, jobject obj){ //obj DataProvider

  34.      //1.找到 java里面的一个class
  35.      jclass clazz = (*env)->FindClass(env,"com/itheima/calljava/DataProvider");

  36.      //2. 查找的是静态的方法。
  37.      // jmethodID (*GetStaticMethodID)(JNIEnv*, jclass, const char*, const char*);
  38.      // jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
  39.      jmethodID methodid = (*env)->GetStaticMethodID(env,clazz,"staticMethodInJava","()V");

  40.      //3. 调用方法
  41.      // void (*CallStaticVoidMethod)(JNIEnv*, jclass, jmethodID, ...);
  42.      (*env)->CallStaticVoidMethod(env,clazz,methodid);

  43.  }

阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~