如何使用QAndroidJniObject从Qt内部调用Java代码?

如何使用QAndroidJniObject从Qt内部调用Java代码?,android,c++,qt,qandroidjniobject,Android,C++,Qt,Qandroidjniobject,从使用Qt Creator创建的空Qt for Android项目开始,如何执行本机Java代码 例如,如果我有这个java方法: class HelloJava { public static String sayHello(int a, int b) { return "Hello from Java, a+b=" + (a+b); } } 我有一个Qt方法,它应该调用HelloJava.sayHello()方法: QString call_HelloJav

从使用Qt Creator创建的空Qt for Android项目开始,如何执行本机Java代码

例如,如果我有这个java方法:

class HelloJava {
    public static String sayHello(int a, int b) {
        return "Hello from Java, a+b=" + (a+b);
    }
}
我有一个Qt方法,它应该调用
HelloJava.sayHello()
方法:

QString call_HelloJava_sayHello(int a, int b) {
    // What goes in here?
}
我应该将Java代码放在我的项目中的什么位置,以及调用HelloJava\u sayHello()方法中的内容?

这个主题非常详细:

// Java class
package org.qtproject.qt5;
class TestClass
{
   static String fromNumber(int x) { ... }
   static String[] stringArray(String s1, String s2) { ... }
}


// C++ code

// The signature for the first function is "(I)Ljava/lang/String;"
QAndroidJniObject stringNumber = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/TestClass",
                                                                           "fromNumber"
                                                                           "(I)Ljava/lang/String;",
                                                                           10);

// the signature for the second function is "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;"
QAndroidJniObject string1 = QAndroidJniObject::fromString("String1");
QAndroidJniObject string2 = QAndroidJniObject::fromString("String2");
QAndroidJniObject stringArray = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/TestClass",
                                                                          "stringArray"
                                                                          "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;"
                                                                           string1.object<jstring>(),
                                                                           string2.object<jstring>());

\u PRO\u FILE\u PWD
是一个qmake变量,将解析到项目目录。

另外,这是前几天发布的:您能告诉我Java类应该放在哪里吗?因为当我使用我的库作为AAR android lib项目的一部分,并调用AAR项目中的类时,QAndroidJniObject没有打印错误就失败了?如果您有时间查看这里,我将非常感谢:
android {
    ANDROID_PACKAGE_SOURCE_DIR=$$_PRO_FILE_PWD_/android
    QT += androidextras
}