2014-09-26 39 views
0

我已經嘗試NDK簡單的例子,比如從本地代碼顯示數據到Android的Java代碼,例如這樣的:的Android NDK:從Java傳遞數據給C++/C

#include <jni.h> 

extern "C" { 
JNIEXPORT jstring JNICALL 
Java_com_example_JNIActivity_stringFromJNI(JNIEnv* env, 
               jobject thiz) 
{ 
    return env->NewStringUTF("I'm C++! What the hell am I doing here in android?!"); 
} 

} 

不過,我想申請其中用戶將不得不從文本字段輸入數據,並且將該數據從其Java代碼傳遞到計算將完成的本地代碼。我將如何做到這一點?

回答

0

在您的Java本地方法中,包含一個接受文本字段值的正式String參數。

在C/C++,從用的jstring JNI方法,如這些訪問字符:

jsize GetStringLength(JNIEnv *env, jstring string); 
const jchar * GetStringChars(JNIEnv *env, jstring string, jboolean *isCopy); 
const char * GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy); 

當你與人物做,一定要釋放他們。

void ReleaseStringChars(JNIEnv *env, jstring string, const jchar *chars); 
void ReleaseStringUTFChars(JNIEnv *env, jstring string, const char *utf); 

看到Java Native Interface Specificationdocumentation for these methods