Qt Android Extras Call Class
Скажем, у меня есть класс Java,
public static String helloWorld() {
return "hello world!";
}
Как в Qt получить то, что вернула эта функция? Пример для уведомлений имеет следующее:
QAndroidJniObject javaNotification = QAndroidJniObject::fromString(m_notification);
QAndroidJniObject::callStaticMethod<void>("org/qtproject/example/notification/NotificationClient",
"notify",
"(Ljava/lang/String;)V",
javaNotification.object<jstring>());
Должен по дескриптору метода быть ()Ljava/lang/String;
? Что должно быть в шевронах после callStaticMethod
?
Редактировать. Исправлено, и я не знаю как. У меня не было шевронов, и дескриптор был правильным.
1 ответ
Решение
QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("com/your/project/YourClass", "helloWorld");
Эквивалентно:
QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod("com/your/project/YourClass", "helloWorld", "()Ljava/lang/String;");
Для тривиальных подписей, то есть подписей, которые не принимают аргументов и возвращают один из известных типов jni, вы можете написать краткую версию, указав тип шаблона.