首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QAndroidJniObject将参数传递给Java方法

如何使用QAndroidJniObject将参数传递给Java方法
EN

Stack Overflow用户
提问于 2021-12-06 20:07:38
回答 1查看 187关注 0票数 0

在我的Qt应用程序中,如果在我的MainActivity类中有一个用Java编写的方法,如下所示,

代码语言:javascript
复制
public Boolean myJavaTestMethod() {
    return true;
}

我知道我可以以以下方式调用该方法:

代码语言:javascript
复制
QAndroidJniObject method_retval = QtAndroid::androidActivity().callObjectMethod<jboolean>("myJavaTestMethod");

问题:

上面是伟大的和它的工作。但是,如何将字符串从Qt C++侧传递到myJavaTestMethod

假设我想调用下面的方法,该方法中包含一个输入参数String

代码语言:javascript
复制
public Boolean myJavaTestMethodWithParam(String str) {
    return true;
}

环境:

我正在使用QT5.15.1商业版本。

EN

回答 1

Stack Overflow用户

发布于 2021-12-06 20:47:50

你必须采取以下步骤:

  1. 使用名称和signature调用Java对象的函数
代码语言:javascript
复制
QAndroidJniObject result = activity.callObjectMethod("myJavaTestMethodWithParam", "(Ljava/lang/String;)B", myJString);

其中activityQtAndroid::androidActivity()返回的内容,myJavaTestMethodWithParam是您的活动函数,"(Ljava/lang/String;)B"是它的签名。

  1. 将QString转换为jstring:
代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70251313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档