Convert jstring to QString

I call 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 jstring , which is not very useful for me. How do I convert this to a QString so that I can use it in my code?

+5
source share
2 answers

You need to use this method .

QString QAndroidJniObject :: toString () const

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

So, I would write this if you were:

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

to convert jstring to QString you can use the following lines:

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

or simply:

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

A source

+2
source

Source: https://habr.com/ru/post/1208536/


All Articles