7

我正在调用一个返回字符串的 Java 函数:

QAndroidJniObject obj = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
jstring jstr = obj.object<jstring>();
QString str = jstr; // This doesn't work, obviously, compiler-error.

它返回 a jstring,这对我来说不是很有用。如何将其转换为 a QString,以便在我的代码中使用它?

4

2 回答 2

8

你需要使用这个方法

QString QAndroidJniObject::toString() 常量

返回带有 java 对象的字符串表示形式的 QString。在 Java String 对象上调用此函数是获取实际字符串数据的便捷方式。

所以,如果我是你,我会写这个:

QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");

QString qstring = string.toString();
于 2014-12-07T17:41:17.090 回答
2

要转换jstringQString您可以使用以下几行:

static void onContactSelected(JNIEnv * env, jobject /*obj*/, jstring number)
{
    QString qstr(env->GetStringUTFChars(number, 0));
    /* .... some codes .... */
}

或者简单地说:

JNIEnv* env;
QString qstr(env->GetStringUTFChars(number, 0));

资源

于 2016-03-08T13:07:09.710 回答