我正在调用一个返回字符串的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
,以便我可以在我的代码中使用它?
答案 0 :(得分:6)
您需要使用this method。
QString QAndroidJniObject :: toString()const
返回带有java对象的字符串表示形式的QString。在Java String对象上调用此函数是获取实际字符串数据的便捷方式。
所以,如果我是你,我会写这个:
QAndroidJniObject string = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
QString qstring = string.toString();
答案 1 :(得分:2)
要将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));