gpt4 book ai didi

java - 在qt中从c++调用java方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:03 27 4
gpt4 key购买 nike

我正在尝试使用 QAndroidJniObject 在 c++ qt 中调用在 android Activity 中定义的方法。这是我在 C++ 类中的调用

QAndroidJniObject data =  QAndroidJniObject::callStaticObjectMethod("com/android/app/appActivity",
"appData",
"(I)Ljava/lang/String;");
QString dataValue = data.toString();
qDebug() <<"Data is " << dataValue;

这个 appData 是在 appActiviy android 类中定义的,它返回一个字符串这是我要调用并获取返回字符串值的已定义方法

static  String appData(){
Log.d("App Data is ", "Working");
return data;
}

但我得到的是 null is dataValue 并且它也没有抛出任何错误。

最佳答案

您可能需要手动检查异常以获取 Java 错误。

来自 Qt documentation :

Handling Java Exception

When calling Java functions that might throw an exception, it is important that you check, handle and clear out the exception before continuing.

Note: It is unsafe to make a JNI call when there are exceptions pending.

void functionException()
{
QAndroidJniObject myString = QAndroidJniObject::fromString("Hello");
jchar c = myString.callMethod<jchar>("charAt", "(I)C", 1000);
QAndroidJniEnvironment env;
if (env->ExceptionCheck()) {
// Handle exception here.
env->ExceptionClear();
}
}

您确定要调用 com/android/app/appActivity 而不是 com/android/app/Activity 吗?

关于java - 在qt中从c++调用java方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com