在qt中执行java文件

Cod*_*ter 5 c++ java qt android qml

我正在尝试在qt中执行一个java文件,这是我的java文件代码:

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;

public class Main extends AppWidgetProvider {

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                    int[] appWidgetIds) {
            // TODO Auto-generated method stub
            super.onUpdate(context, appWidgetManager, appWidgetIds);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是如何调用这个java文件,我很困惑,不知道如何调用函数onUpdate,任何想法?

Nej*_*jat 5

要在Qt Android应用程序中运行Java代码,您应该使用Qt Android Extras模块,该模块包含用于在Android上进行开发的其他功能.

您可以使用JNI从C/C++调用Java函数或从Java调用C/C++函数.

让我们考虑你有一个静态Java方法,如:

package com.MyApp;

public class JavaClass
{
    public static int SomeMethod(int n)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,您需要将其添加到.pro文件中:

QT += androidextras
Run Code Online (Sandbox Code Playgroud)

并包含相关的头文件:

#include <QAndroidJniObject>
Run Code Online (Sandbox Code Playgroud)

然后,您可以从C++代码中调用静态java函数,如:

bool retVal = QAndroidJniObject::callStaticMethod<jint>
                        ("com/MyApp/JavaClass" // class name
                        , "SomeMethod" // method name
                        , "(I)I" // signature
                        , val);
Run Code Online (Sandbox Code Playgroud)

有关更详细的说明,您可以看到这一点.