考虑这个带有静态方法的 Java 类:
public class TestClass{
public string str;
public TestClass() {
str = "Test From Java";
}
public static String staticMethod() {
return "Test From Java";
}
}
我已经在 C++ 文件中编写了这些代码行:
QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod(
"org/.../TestClass"
,"staticMethod"
,"(V)Ljava/lang/String;");
似乎一切正常,但我不知道如何使用 str
对象。我尝试使用 str.tostring()
方法将它转换为 QString
对象,但它总是返回一个空字符串。
为什么它不能按预期工作?我还测试了 ()Ljava/lang/String;
方法签名但没有成功!
提前致谢。
最佳答案
您应该在 <...>
中指定返回的 JNI 类型调用方法时:
QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod<jstring>(
"org/.../TestClass"
,"staticMethod");
QString string = str.toString();
这里不需要定义签名,因为你的函数没有参数。
关于android - 通过 JNI 调用简单的 java 静态方法不起作用,尽管 C++ 编译并运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693031/