2014-09-13 44 views
0

我有一個JNI函數調用Android活動中的實例方法。我正在使用CallNonvirtualVoidMethod。像這樣:通過使用CallNonvirtualVoidMethod傳遞參數

jarray buffer = (*env)->NewByteArray(env, len); 
void* pBuffer = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL); 
// ... load data to buffer via pBuffer 
(*env)->ReleasePrimitiveArrayCritical(env, buffer, pBuffer, 0); 
(*env)->CallNonvirtualVoidMethod(env, o, c, m); // associate m with java method name 'mMethod' somewhere 
(*env)->DeleteLocalRef(env, buffer); 

如果沒有參數通過(如'm'後沒有任何參數),一切正常。但是如果帶有參數(即使只有一個單獨的整數,如:(* env) - > CallNonvirtualVoidMethod(env,o,c,m,msg);),該活動似乎沒有正確接收它們(但我確定它被調用)。像這樣:

public void mMethod(int msg) { 
    Log.i("aaa", "I am here"); <----------------successfully printed in logcat 
    Log.i("aaa", "I hate: " + msg);<------------not got printed 
} 

我正在使用ndk-r8-crystax。任何人都可以幫助我?謝謝。

回答

-2

當我打電話給另一個班級而不是任何活動時,問題就消失了。猜測原因是活動無法與基元/引用作爲參數進行通信。