Search code examples
androidc++qtqstringqtandroidextras

Convert jstring to QString


I'm calling a Java function that returns a string:

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

And it returns a jstring, which is not very useful for me. How do I convert that to a QString, so I can use it in my code?


Solution

  • You need to use this method.

    QString QAndroidJniObject::toString() const

    Returns a QString with a string representation of the java object. Calling this function on a Java String object is a convenient way of getting the actual string data.

    So, I would write this if I were you:

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