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