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, вы можете написать краткую версию, указав тип шаблона.

Другие вопросы по тегам