如何使用QAndroidJniObject从Qt内部调用Java代码?
从使用Qt Creator创建的空Qt for Android项目开始,如何执行本机Java代码 例如,如果我有这个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
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
}