huy*_*ync 2 java-native-interface android
我在 Activity 中有一个静态 Java 函数。该函数有 int 参数。我想从 JNI 调用这个函数。我使用下面的代码来调用,但我不知道如何传递 int 参数:
在爪哇中:
public static void updateTopScoreLeaderboard(int score) {
Log.i("", "updateTopScoreLeaderboard " + score);
}
Run Code Online (Sandbox Code Playgroud)
在 JNI 中:
if (JniHelper::getStaticMethodInfo(methodInfo, "com/nch/myApp/MyActivity", "updateTopScoreLeaderboard", "()V"))
{
methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID);
}
methodInfo.env->DeleteLocalRef(methodInfo.classID);
Run Code Online (Sandbox Code Playgroud)
如果 Java 函数没有参数,该代码可以很好地工作。但在这种情况下(有 int 参数),它不起作用。
您需要更改方法签名以匹配 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3080 次 |
| 最近记录: |