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. 浅谈Java中Collections.sort对List排序的两种方法
  2. 箭头函数的基础使用
  3. Python技巧匿名函数、回调函数和高阶函数
  4. Python list sort方法的具体使用
  5. python list.sort()根据多个关键字排序的方法实现
  6. Android(安卓)的实现TextView中文字链接的4种方法
  7. 如何修改Android的Bitmap
  8. [Android] 切换语言后避免Activity重启方法
  9. Android之IPC2————AIDL

随机推荐

  1. Android(安卓)保存和恢复activity的状态
  2. android 禁用锁屏 到修改方式
  3. Android: requires android.permission.R
  4. 【Android】图文解密Android(安卓)Window
  5. Android编译系统中的Android.bp、Bluepri
  6. Android(安卓)自动化测试—robotium(三)Edi
  7. Android相机开发中遇到的坑(注意事项)
  8. [转]Android(安卓)调用系统摄像头
  9. Android9.0网络请求解决方案_小笔记
  10. Mac 下 Android(安卓)Studio 获取SHA1 码