将jstring转换为QString

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

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

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

    您需要使用此方法 。

    QString QAndroidJniObject :: toString()const

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

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

     QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod("HelloJava", "getString"); QString qstring = string.toString(); 

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

    资源