Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 703
sashoalm Avatar asked Dec 07 '14 17:12

sashoalm


2 Answers

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();
like image 55
lpapp Avatar answered Sep 20 '22 12:09

lpapp


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

like image 22
S.M.Mousavi Avatar answered Sep 20 '22 12:09

S.M.Mousavi