将jstring转换为QString

7
我正在调用一个返回字符串的Java函数:
QAndroidJniObject obj = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
jstring jstr = obj.object<jstring>();
QString str = jstr; // This doesn't work, obviously, compiler-error.

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

2个回答

8

你需要使用这个方法

QString QAndroidJniObject::toString() const

返回一个包含Java对象的字符串表示的QString。在Java字符串对象上调用此函数是获取实际字符串数据的便捷方式。

因此,如果我是你,我会这样写:

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

QString qstring = string.toString();

2

如果需要将jstring转换为QString,可以使用以下代码:

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));

Source


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接