Android JNI开发之C/C++层调用JAVA
2018-03-02 10:13
453 查看
一、从C/C++层调用JAVA层代码(无参数调用)
//在c代码里面调用java代码里面的方法 // java 反射 // 1 . 找到java代码的 class文件 // jclass (*FindClass)(JNIEnv*, const char*); jclass dpclazz = (*env)->FindClass(env, "com/renhui/sffmpegandroidstreamer/MainActivity"); if(dpclazz==0) { LOGI("find class error"); return; } LOGI("find class "); //2. 寻找class里面的方法 // jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); jmethodID method1 = (*env)->GetMethodID(env,dpclazz,"helloFromJava","()V"); if(method1==0){ LOGI("find method1 error"); return; } LOGI("find method1 "); //3. 调用这个方法 // void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); (*env)->CallVoidMethod(env,obj,method1);
二、从C/C++层调用JAVA层代码(传参——字符串)
//在c代码里面调用java代码里面的方法 // java 反射 //1 . 找到java代码的 class文件 // jclass (*FindClass)(JNIEnv*, const char*); jclass dpclazz = (*env)->FindClass(env,"com/renhui/sffmpegandroidstreamer/MainActivity"); if(dpclazz==0){ LOGI("find class error"); return; } LOGI("find class "); //2 寻找class里面的方法 // jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*); jmethodID method1 = (*env)->GetMethodID(env,dpclazz,"helloFromJava","(Ljava/lang/String;)V"); if(method1==0){ LOGI("find method1 error"); return; } LOGI("find method1 "); //3 .调用这个方法 // void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...); (*env)->CallVoidMethod(env,obj,method1, (*env)-> NewStringUTF(env, "这是c反射调用java方法" ));
相关文章推荐
- Android-本地方法C调用Java中的方法/NDK-JNI开发实例(六)
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android 基于NDK的JNI开发 C调用java和java调用C的进阶教程
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- android jni开发 把一段java代码转换成c++方式调用
- 【学习Android NDK开发】Java通过JNI调用native方法
- Android Studio Jni开发(二)实现Native调用java方法和Native调用Android API
- Cocos2d-x游戏开发之Cocos2dx通过JNI调用Android的Java代码(webView实例)
- Android JNI开发,C调用Java方法遇到的问题
- Android JNI之JAVA调用C/C++层
- Android-本地方法与Java相互调用-自定义ProgressBar(锅炉压力监测例子)/NDK-JNI开发实例(七)
- 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
- Android JNI/NDK开发(2)JNI实现C/C++与Android/JAVA相互调用
- Android HAL开发之Java应用程序直接调用JNI库
- android jni开发 把一段java代码转换成c++方式调用
- Android-java调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(二)
- [原创]Android 基于NDK的JNI开发 C调用java和java调用C的进阶教程