在我的Qt应用程序中,如果在我的MainActivity类中有一个用Java编写的方法,如下所示,
public Boolean myJavaTestMethod() {
return true;
}我知道我可以以以下方式调用该方法:
QAndroidJniObject method_retval = QtAndroid::androidActivity().callObjectMethod<jboolean>("myJavaTestMethod");问题:
上面是伟大的和它的工作。但是,如何将字符串从Qt C++侧传递到myJavaTestMethod
假设我想调用下面的方法,该方法中包含一个输入参数String
public Boolean myJavaTestMethodWithParam(String str) {
return true;
}环境:
我正在使用QT5.15.1商业版本。
发布于 2021-12-06 20:47:50
你必须采取以下步骤:
signature调用Java对象的函数QAndroidJniObject result = activity.callObjectMethod("myJavaTestMethodWithParam", "(Ljava/lang/String;)B", myJString);其中activity是QtAndroid::androidActivity()返回的内容,myJavaTestMethodWithParam是您的活动函数,"(Ljava/lang/String;)B"是它的签名。
QString helloString("Hello");
QAndroidJniObject string = QAndroidJniObject::fromString(helloString);
jstring myJString = string.object<jstring>();要理解signature部件,请检查:https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html#wp16432
更多关于调用Android/Java方法的信息如下:https://doc.qt.io/qt-5/qandroidjniobject.html#callObjectMethod-1
https://stackoverflow.com/questions/70251313
复制相似问题