2016-10-13 2 views
1

私のjobjectは{"A", "B", 1}のように見えますが、今はその値を取得したいと思います。JNIを使​​用してCでjobjectの文字列値を取得する方法は?

現在、私はそのコードを持っている:Integerについては

class clazz = (*env)->FindClass(env, "model/Spieler"); 
jmethodID midVorname = (*env)->GetMethodID(env, clazz, "getVorname", "()Ljava/lang/String;"); 
jmethodID midNachname = (*env)->GetMethodID(env, clazz, "getNachname", "()Ljava/lang/String;"); 
jmethodID midTrikotnummer = (*env)->GetMethodID(env, clazz, "getTrikotnummer", "()I"); 

char vorname[SIZE]; 
char nachname[SIZE]; 
int trikotnummer; 
jobject newObj; 

link = (Spieler*) malloc(sizeof(Spieler)); 

newObj = (*env)->GetObjectArrayElement(env, arr, i); 

trikotnummer = (*env)->CallIntMethod(env, newObj, midTrikotnummer); 

それは上記のように動作しますが、私はjmethodIDででString値を取得する方法を見当もつかない。
ご意見はありますか?あなたはこのような何かを試すことが

+0

? –

答えて

1

あなたは文字列値が必要なのか、文字エンコーディング
/* Access the i-th element in the array */ 
jobject obj = (*env)->GetObjectArrayElement(env, arr, i); 

/* Call the method */ 
jobject resultString = (*env)->CallObjectMethod(env, obj, /* method ID */ midVorname); 

/* Get a C-style string */ 
const char* str = (*env)->GetStringUTFChars(env, (jstring) resultString, NULL); 

/* Use the string ... */ 

/* Clean up */ 
(*env)->ReleaseStringUTFChars(env, resultString, str); 
関連する問題