JNI на Android: как получить строку из кода Java?

Я читал много примеров для получения строки Java в коде C / C ++, но кажется, что Я кое-что скучаю. этот простой код не работает ..

В ActivityTest (Java-код Android) я:

public static native void nativeInit(String stringfromjava);

В TestActivity я:

ActivityTest.nativeInit("test");

и в моем test-jni.c:

JNIEXPORT void JNICALL  Java_com_test_jni_ActivityTest_nativeInit(JNIEnv* env, jclass cls, jobject obj, jstring stringfromjava){

__android_log_print(ANDROID_LOG_INFO, "TESTJNI","Native Init started");

const char* w_buf = (*env)->GetStringUTFChars(env, stringfromjava, 0);

if(w_buf == NULL) {
    __android_log_print(ANDROID_LOG_INFO, "TESTJNI","file path recv nothing");
}

else {
        __android_log_print(ANDROID_LOG_INFO, "TESTJNI","String: %s", w_buf);
}

(*env)->ReleaseStringUTFChars(env, stringfromjava, w_buf);

}

Но в моем logcat Я получаю только:

I/TESTJNI (18921): Native Init started
I/TESTJNI (18921): String: 

Где я ошибаюсь ...?

ИСПРАВЛЕНО Благодаря Марио, удаление "jobject obj" из подписи устранило мою проблему!

5
задан Giuseppe 1 February 2012 в 08:24
поделиться