2017-01-26 13 views
0

Я пытался так:Как позвонить из jni java-библиотеки с двумя строковыми параметрами?

void CallbackStringFromJni(const char *name, const char *type) 
{ 
    jboolean isAttached; 
    JNIEnv *env; 
    jmethodID mid; 
    jstring js, js2; 
    LOGE("callbackStringFromJni Begin"); 
    env = getJniEnv(&isAttached); 
    if (env == NULL) 
      goto FAIL0; 

    mid = getApplicationJniMethodId(env, applicationJniObj, "callbackStringFromJni", "(SS)V"); 
    if (mid == NULL) 
      goto FAIL1; 

    js = (*env)->NewStringUTF(env, name); 
    js2 = (*env)->NewStringUTF(env, type); 
    (*env)->CallVoidMethod(env, applicationJniObj, mid, js, js2); 

    if (isAttached) 
    { 
     (*global_vm)->DetachCurrentThread(global_vm); 
    } 
    LOGE("callbackStringFromJni End"); 
    return; 
FAIL1: 
    if (isAttached) 
    { 
     (*global_vm)->DetachCurrentThread(global_vm); 
    } 
FAIL0: 
    LOGE("callbackStringFromJni FAILED"); 
    return; 
} 

Но я получаю эту спину:

01-26 11:53:02.500: E/VidyoMobile app/src/main/jni/ndkVidyoSample.c(31091): getApplicationJniMethodId - getApplicationJniMethodId: Failed to get callbackStringFromJni method 
01-26 11:53:02.603: E/AndroidRuntime(31091): java.lang.NoSuchMethodError: no non-static method "Lcom/vidyo/vidyocore/VidyoCoreApplication;.callbackStringFromJni(SS)V" 

Мой метод в Java выглядит как:

public void callbackStringFromJni(String name, String typeS) { 
    Log.e("","callbackStringFromJni name: " + name + ".. type: " + typeS); 
} 

ответ

0

Это должно быть так:

mid = getApplicationJniMethodId(env, applicationJniObj, "callbackStringFromJni", "(Ljava/lang/String;Ljava/lang/String;)V"); 

не

"(SS)V" 

 Смежные вопросы

  • Нет связанных вопросов^_^