Java 如何在Qt中使用JNI创建字符串数组

Java 如何在Qt中使用JNI创建字符串数组,java,android,c++,qt,java-native-interface,Java,Android,C++,Qt,Java Native Interface,我必须用Qt编写一些特定于Android平台的代码,并且需要使用JNI。我对如何创建某个对象的数组有问题。在这种情况下,我想用C++来构造一个字符串数组。 在下面的两个代码段中,第一个代码段创建了一个java字符串,并按预期工作。在第二个代码段中,我想创建一个java字符串数组,但我得到了调试消息:“java字符串数组无效”,因此我假设传递给“QAndroidJniObject javaStringArray()”函数的签名和/或参数不正确 我一直在看文档,但无法找到或正确理解如何做到这一点 我

我必须用Qt编写一些特定于Android平台的代码,并且需要使用JNI。我对如何创建某个对象的数组有问题。在这种情况下,我想用C++来构造一个字符串数组。 在下面的两个代码段中,第一个代码段创建了一个java字符串,并按预期工作。在第二个代码段中,我想创建一个java字符串数组,但我得到了调试消息:“java字符串数组无效”,因此我假设传递给“QAndroidJniObject javaStringArray()”函数的签名和/或参数不正确

我一直在看文档,但无法找到或正确理解如何做到这一点

我假设我也必须发送想要构造的java字符串数组对象的大小

感谢您的帮助

QAndroidJniObject javaString("java/lang/String");
if (!javaString.isValid()) {
    qDebug() << "Java string not valid";
    return false;
}

QAndroidJniObject javaStringArray("[Ljava/lang/String;");
if (!javaStringArray.isValid()) {
    qDebug() << "Java string array not valid";
    return false;
}
qandroidjniobjectjavastring(“java/lang/String”);
如果(!javaString.isValid()){
qDebug()需要一个类名,因此我担心传递字符串数组签名将不起作用。您可能需要动手并调用JNI NewObjectArray()。请尝试以下操作:

QAndroidJniEnvironment env;
jobjectArray stringArray = env->NewObjectArray(5, env->FindClass("java/lang/String"), NULL);
QAndroidJniObject jniArray = QAndroidJniObject::fromLocalRef(stringArray);
// ...
这将创建一个由5个空字符串组成的数组,如果您愿意,或者您必须注意调用DeleteLocalRef()