7

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?

sashoalm
  • 75,001
  • 122
  • 434
  • 781

2 Answers2

8

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();
Community
  • 1
  • 1
László Papp
  • 51,870
  • 39
  • 111
  • 135
2

for converting jstring to QString you can use following lines:

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

or in simple:

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

Source

S.M.Mousavi
  • 5,013
  • 7
  • 44
  • 59