jni GetMethodID 多个参数

最近在做NDK开发

1。对于本地静态方法 public static native String getStr(); 对应C/C++代码,不需要加入static关键字。

2。对于静态方法。第二个参数:jclass. 表示调用类。

3。对于非静态方法。第二个参数 :jobject 表示类实例。

4。对于多个参数。好吧比如两个ini,那么就是:"(II)V"); 一个:"(I)V");

 

一下是例子

c/c++ 代码

JNIEXPORT jstring JNICALL Java_com_permadi_testjni_JNIDemo_getStr(JNIEnv *env,
  jclass obj) {


 jmethodID onMapSurfaceCreate = env->GetMethodID(obj, "fsum", "(II)V");
 jobject mFileDescriptor = env->NewObject(obj, onMapSurfaceCreate);
 env->CallVoidMethod(mFileDescriptor, onMapSurfaceCreate, 1, 2);
 return env->NewStringUTF("I'm from C!");
}

 

java 代码:

import android.util.Log;

public class JNIDemo {

 // 本地静态方法
 public static native String getStr();
 // 本地方法
 public native int getCint(String str);
 // 回调函数
 private void fsum( int i, int j){
  Log.e("aaaa", "aaaaa");
 }
 
 static {
        System.loadLibrary("TestJni");
    }

}

 

 

 

 

 

 

你可能感兴趣的:(工作问题)