Java调用JJNI相信大家都会了,昨天写一个jni调用java真是被坑惨了,就不详细描述了 在此记录一下

调用步骤

1:申明引用函数Class函数

例如:

char* classname = "com/android/cofig/XXX";  //跟java的区别是.换成/jclass clazz = (*env)->FindClass(env, classname);// 找到javaclass文件

2:寻找class里面的方法就是JAVA的方法函数 得到一个实例的域的ID

例如:

方法名 作用
GetFieldID 得到一个实例的域的ID
GetStaticFieldID 得到一个静态的域的ID
GetMethodID 得到一个实例的方法的ID
GetStaticMethodID 得到一个静态方法的ID

调用注意区分

jmethodID method = (*env)->GetMethodID(env, clazz, "test",            "(Ljava/lang/String;)Ljava/lang/String;");//clazz函数 test函数名 (Ljava/lang/String;)Ljava/lang/String; 这一句是定义参数借口的传递值和返回值这个方法名就是这样public String test(String test){}

//定义方法的对照表网上找的一份

类型 符号
boolean Z
byte B
char C
short S
int I
long L
float F
double D
void V
object对象 LClassName; L类名;//这个理解成String转换就成这样 Ljava/lang/String;
Arrays [array-type [数组类型

3:函数调用

例如:

//clazz为第一步定义的clazz  method方法定义的idjstring result = (jstring)(*env)->CallObjectMethod(env, clazz, method,            action);// 使用CallObjectMethod方法调用方法。参数的意义: /**env-->JNIEnv //obj-->第一步定义的class//mid--> 即第二步获得的Methodid//action-->方法需要的参数**/

当然CallMethod的方法很多 例调用类似
CallVoidMethod CallStaticVoidMethod
CallIntMethod CallStaticVoidMethod
CallBooleanMethod CallStaticVoidMethod
CallByteMethod CallStaticVoidMethod

推荐一个网址查看Android jni的很多函数
http://game.ceeger.com/Script/AndroidJNI/AndroidJNI.html

更多相关文章

  1. Android 的实现TextView中文字链接的4种方法
  2. [Android] 切换语言后避免Activity重启方法
  3. 用cmd 命令更改Android 的默认虚拟机的地址的方法
  4. Android中SensorManager.getRotationMatrix函数原理解释
  5. Android开发设置Activity全屏与不全屏的方法
  6. Android中监听Home键的4种方法总结
  7. Android利用已有控件实现自定义控件

随机推荐

  1. android休眠与唤醒驱动流程分析
  2. Android中各种onTouch事件
  3. Android中Activity多页滑动切换效果(使用V
  4. 相对布局
  5. android 设置缓存工具类
  6. android 代码混淆之后 微信分享不起作用
  7. compileSdkVersion、buildToolsVersion、
  8. Android使用了ProGuard时注意的事项
  9. Android(安卓)解析IMEI
  10. android触摸实现方式