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?
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();
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With