У меня есть статическая функция Java в Activity. Эта функция имеет параметр int. Я хочу вызвать эту функцию из JNI. Я использую ниже код для вызова, но я не знаю, как передать параметр INT:Как вызвать функцию Java с параметром int из JNI
В 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 param), он не работает.
@huync Чтобы найти подписи использовать 'javap' , Например, 'javap -s -public com/nch/myApp/MyActivity | egrep -A 2 "updateTopScoreLeaderboard". Так же, как при запуске 'java', код нужно сначала скомпилировать и обязательно пройти в пути к классам, если это необходимо. –
Это отличный ответ. – huync
Вы должны вызывать 'CallStaticVoidMethod', а не' CallStaticObjectMethod', поскольку метод Java возвращает 'void', а не объект. –