package com.JavaUtility;
import org.qtproject.qt5.android.bindings.QtActivity;
public class JavaUtility extends org.qtproject.qt5.android.bindings.QtActivity
{
public String testFunction()
{
return "Hello from Java!";
}
public int testFunction2()
{
return 32;
}
public boolean testFunction3()
{
return true;
}
}
1、在 AndroidManifest.xml 文件中 activity 标签的 android:name 改成:
android:name="com.JavaUtility.JavaUtility"
2、这个类继承了 org.qtproject.qt5.android.bindings.QtActivity ,它是一个活动对象,该类的函数要用 QtAndroid::androidActivity() 来调用。
3、调用:
QAndroidJniObject androidJinObject = QtAndroid::androidActivity();
bool a = androidJinObject.callMethod<jboolean>("testFunction3");
qDebug() << "Result from Java:" << a;
jint a2 = androidJinObject.callMethod<jint>("testFunction2");
qDebug() << "Result from Java:" << a2;
QAndroidJniObject javaString = androidJinObject.callObjectMethod("testFunction", "()Ljava/lang/String;");
QString result = javaString.toString();
qDebug() << "Result from Java (String):" << result;
- 字符串类型返回值的函数与其他不同,
callMethod()
模板函数没有直接支持返回jstring
类型的方法。 - callObjectMethod() 的第一个参数是方法名,第二个参数是方法签名。对于返回String类型的方法,方法签名应为"()Ljava/lang/String;",表示这是一个无参数的方法,返回一个java.lang.String对象。