Android_NDK_c调用java代码
来源:互联网 发布:淘宝网退机票 编辑:程序博客网 时间:2024/05/23 00:01
本博文为子墨原创,转载请注明出处!
http://blog.csdn.net/zimo2013/article/details/13183499
1.找到class字节码文件
jclass clazz = (*env)->FindClass(env, "com/example/ndk/MainActivity");if(clazz == 0){ //如果该字节码文件不存在LOGI("error clazz");return;}
2.找到Method方法
jmethodID method = (*env)->GetMethodID(env, clazz, "add","(II)I");if(method == 0){LOGI("method error");return;}关于GetMethodID的第三个参数,可以利用javap -s <class完整路径>来得到方法的签名,注意包含后面的;号
3.调用相应的方法
jint result = (*env)->CallIntMethod(env,obj,method,4, 10);//第二个为操作的对象,method为调用的方法,后面为参数信息LOGI("result = %d", result);/*jstring barr = (jstring)(*env)->CallObjectMethod(env,obj,method);//可以执行强转char* charss = Jstring2CStr(env, barr);*/
4.补:将jstring转为char*
//将java语言的就string 转化为c语言中的*char类型char* Jstring2CStr(JNIEnv* env, jstring jstr) {char* rtn = NULL;jclass clsstring = (*env)->FindClass(env, "java/lang/String");jstring strencode = (*env)->NewStringUTF(env, "utf-8");jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes","(Ljava/lang/String;)[B");jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid,strencode); // String .getByte("GB2312");jsize alen = (*env)->GetArrayLength(env, barr);jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);if (alen > 0) {rtn = (char*) malloc(alen + 1); //"\0"memcpy(rtn, ba, alen);rtn[alen] = 0;}(*env)->ReleaseByteArrayElements(env, barr, ba, 0); //return rtn;}
- Android_NDK_c调用java代码
- java调用天气预报调用代码
- Java调用天气预报调用代码
- c代码调用java代码
- Java 代码调用ANT
- C#调用java代码
- Java 代码调用ANT
- delphi调用java代码
- C#调用java代码
- Java 代码调用ANT
- Java https调用代码
- JS调用Java代码
- java的调用代码
- C调用java代码
- C调用java代码
- scala调用java代码
- C#调用java代码
- cocos2dx 调用java 代码
- servlet中getsession的用法
- 我的编程
- 删除WIN7启动菜单项的方法(可行)
- VMware vSphere 5.1 学习系列之四:安装 SQL Server 数据库
- hadoop hbase metric名全解释
- Android_NDK_c调用java代码
- matlab资料收藏
- VMware vSphere 5.1 学习系列之五:安装 vCenter Server
- Linux 几条强大命令的学习
- Hadoop启动脚本全解析,不能再全了![bed]
- VMware vSphere 5.1 学习系列之六:vCenter Server 主机管理
- 【Android 4.0】conversion to dalvik format failed with error 1
- VMware vSphere 5.1 学习系列之七:虚拟机管理
- 沿着掌纹烙着宿命