【问题标题】:Convert jstring to QString将 jstring 转换为 QString
【发布时间】:2014-12-07 17:33:34
【问题描述】:

我正在调用一个返回字符串的 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,以便在我的代码中使用它?

【问题讨论】:

    标签: android c++ qt qstring qtandroidextras


    【解决方案1】:

    您需要使用this method

    QString QAndroidJniObject::toString() 常量

    返回一个带有 java 对象的字符串表示的 QString。在 Java String 对象上调用此函数是获取实际字符串数据的便捷方式。

    所以,如果我是你,我会写这个:

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

    【讨论】:

      【解决方案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));
      

      Source

      【讨论】:

        猜你喜欢
        • 2021-11-17
        • 2012-05-16
        • 1970-01-01
        • 2015-07-12
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多