Je teste certaines fonctions avec Android, JNI et NDK.JNI CALL modifier le paramètre jclass ou comment obtenir un jobject à partir d'un paramètre jclass
J'ai la classe JAVA suivante:
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");
}
}
Je l'ai utilisé javah -jni
pour générer le fichier d'en-tête:
#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
Comme vous pouvez le voir, la deuxième paramter est le type JClass.
Je me demande comment je peux changer JClass pour un jobject paramètre.
J'ai besoin d'un paramètre jobject pour obtenir une valeur d'un champ de la classe qui appelle cette fonction native.
Comment puis-je modifier la signature de la méthode? ou comment puis-je obtenir jobject de jclass paremeter?
Merci.