Android — конвертировать jstring в QString

Я вызываю функцию Java, которая возвращает строку:

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

И это возвращает jstringчто не очень полезно для меня. Как я могу преобразовать это в QString, так что я могу использовать его в моем коде?

5

Решение

Вам нужно использовать Этот метод.

QString QAndroidJniObject :: toString () const

Возвращает QString со строковым представлением объекта Java. Вызов этой функции для объекта Java String является удобным способом получения фактических строковых данных.

Итак, я написал бы это на вашем месте:

QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");

QString qstring = string.toString();
5

Другие решения

для конвертации jstring в QString Вы можете использовать следующие строки:

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

или просто:

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

Источник

2

По вопросам рекламы [email protected]