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。任何人都可以幫助我?謝謝。