Я вызываю функцию 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
, так что я могу использовать его в моем коде?
Вам нужно использовать Этот метод.
QString QAndroidJniObject :: toString () const
Возвращает QString со строковым представлением объекта Java. Вызов этой функции для объекта Java String является удобным способом получения фактических строковых данных.
Итак, я написал бы это на вашем месте:
QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
QString qstring = string.toString();
для конвертации 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));