Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在qt中执行java文件_Java_Android_C++_Qt_Qml - Fatal编程技术网

在qt中执行java文件

在qt中执行java文件,java,android,c++,qt,qml,Java,Android,C++,Qt,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 con

我试图在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);
    }
}

问题是如何调用这个java文件,我很困惑&不知道如何调用onUpdate函数,有什么想法吗

要在Qt Android应用程序中运行Java代码,您应该使用包含Android开发附加功能的模块

您可以使用JNI从C/C++调用Java函数,或者从Java回调C/C++函数

让我们考虑一下静态java方法,比如:

package com.MyApp;

public class JavaClass
{
    public static int SomeMethod(int n)
    {
        ...
    }
}
首先,您需要将其添加到.pro文件中:

QT += androidextras
并包括相关的头文件:

#include <QAndroidJniObject>
#包括

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

bool retVal = QAndroidJniObject::callStaticMethod<jint>
                        ("com/MyApp/JavaClass" // class name
                        , "SomeMethod" // method name
                        , "(I)I" // signature
                        , val);
bool retVal=QAndroidJniObject::callStaticMethod
(“com/MyApp/JavaClass”//类名
,“SomeMethod”//方法名称
,“(I)本人”//签字
,val);

有关更详细的说明,请参见。

您是否正在尝试使用QProcess启动包含Java代码的新进程?