Вызов простого Java-статического метода через JNI не работает, хотя C++ компилирует и запускает его
Учитывая этот класс Java со статическим методом:
public class TestClass{
public string str;
public TestClass() {
str = "Test From Java";
}
public static String staticMethod() {
return "Test From Java";
}
}
Я написал эти строки кода в файле C++:
QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod(
"org/.../TestClass"
,"staticMethod"
,"(V)Ljava/lang/String;");
Кажется, все работает, но я не знаю, как я могу использовать str
Объект. Я пытался преобразовать его в QString
использование объекта str.tostring()
метод, но он всегда возвращает пустую строку. Почему это не работает, как ожидалось? Я также проверил ()Ljava/lang/String;
для подписи метода, но безуспешно!
Заранее спасибо.
1 ответ
Решение
Вы должны указать возвращаемый тип JNI в <...>
при вызове метода:
QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod<jstring>(
"org/.../TestClass"
,"staticMethod");
QString string = str.toString();
Здесь нет необходимости определять сигнатуру, так как ваша функция не имеет аргумента.