使用字符串参数调用 AndroidJni 静态方法

Elj*_*jay 1 c++ java qt android qtandroidextras

我试图使用带有字符串参数的 QAndroidJniObject 来调用 Qt C++ 类中的 Java 静态函数。

这是我的 Java 类,具有我正在调用的函数

        public class StatusBar{

        public static void setStatusBarBackgroundColor(Activity activity,String colorPref) {

// My code


         }  
        }
Run Code Online (Sandbox Code Playgroud)

我从 C++ 调用这个函数

void ECApplicationInfo::changeStatusBarColor(QString color)
{
  QAndroidJniObject::callStaticMethod<void>( 
                  "com/ezeecube/ezeesync/StatusBar",
                  "setStatusBarBackgroundColor",
                  "(Landroid/app/Activity;)V",
                   activity,color);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

错误:无法通过“...”活动传递非平凡可复制类型“QString”类型的对象,颜色);

我怎样才能摆脱这个错误

Nej*_*jat 5

您的函数签名的定义不正确。您还应该指定类型为 的第二个参数Ljava/lang/String;。您还应该转换QStringjstring并将其作为参数传递:

QAndroidJniObject::callStaticMethod<void>( 
                  "com/ezeecube/ezeesync/StatusBar",
                  "setStatusBarBackgroundColor",
                  "(Landroid/app/Activity;Ljava/lang/String;)V",
                   activity,QAndroidJniObject::fromString(color).object<jstring>());
Run Code Online (Sandbox Code Playgroud)