我在Activity中有一个静态Java函数。这个函数有int参数。我想从JNI调用此函数。我使用下面的代码来调用,但我不知道如何传递int参数:
在Java中:
public static void updateTopScoreLeaderboard(int score) {
Log.i("", "updateTopScoreLeaderboard " + score);
}
在JNI:
if (JniHelper::getStaticMethodInfo(methodInfo, "com/nch/myApp/MyActivity", "updateTopScoreLeaderboard", "()V"))
{
methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID);
}
methodInfo.env->DeleteLocalRef(methodInfo.classID);
如果Java函数没有参数,那么该代码可以正常工作。但在这种情况下(有int参数),它不起作用。
答案 0 :(得分:4)
您需要更改方法签名以匹配int参数,因此它是(I)V
而不是()V
,并且还将int参数添加到方法调用中:
int myInt = 0;
if (JniHelper::getStaticMethodInfo(methodInfo, "com/nch/myApp/MyActivity", "updateTopScoreLeaderboard", "(I)V"))
{
methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID, myInt );
}
methodInfo.env->DeleteLocalRef(methodInfo.classID);