3
我正在使用Android,JNI和NDK测试一些函数。JNI CALL更改jclass参数或如何从jclass参数获取jobject
我有以下的JAVA类:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class JNITest extends Activity {
private int contador;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
contador = 0;
TextView label = (TextView)findViewById(R.id.Text);
label.setText(Integer.toString(contador));
}
public void addClick(View addButton) {
nativeAdd(1);
TextView label = (TextView)findViewById(R.id.Text);
label.setText(Integer.toString(contador));
}
private static native void nativeAdd(int value);
static {
System.loadLibrary("JNITest01");
}
}
我已经使用javah -jni
生成头文件:
#include <jni.h>
/* Header for class es_xxxxx_pruebas_JNITest */
#ifndef _JNITestNative
#define _JNITestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_xxxxx_tests_JNITest
* Method: nativeAdd
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_com_xxxxx_tests_JNITest_nativeAdd
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
正如你所看到的,第二放慢参数是JCLASS类型。
我想知道如何改变jclass为jobject参数。
我需要一个jobject参数来从类的字段中获取一个值,调用这个本地函数。
如何更改方法签名?或者我如何从jclass paremeter获取jobject?
谢谢。