如何获取指向运行Qt Android应用程序的本机活动的指针?

时间:2014-04-07 10:54:08

标签: android c++ qt qt5.2

就像是asked before一样,如果您拥有Android的Qt代码:

ANativeActivity* theActivity = <something>;

ANativeActivity_setWindowFlags( theActivity,
            AWINDOW_FLAG_DISMISS_KEYGUARD, 0 );

如何获取指向运行Qt应用程序的原生活动的指针(<something>位)?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你能获得一个指向Java QtActivity对象的C ++指针,那我就不太可能了,因为它们生活在两个不同的世界中。

但是,通过使用从Qt 5.2开始可用的QAndroidJniObject,您可以实现所需。以下是大纲:

步骤1:创建一个名为MyCppClass的C ++类,其函数名为setWindowFlag(int flag,int val)。

步骤2:使用名为setActivity(活动活动)的方法创建名为MyJavaClass的Java类。创建另一个名为setWindowFlag(int flag,int val)的方法,您可以使用Android API设置窗口的标记。

步骤3:在Java类QtActivity中,调用MyJavaClass.setActivity(this)。我在方法onCreate()和加载Qt应用程序之前这样做。

步骤4:在MyCppClass中,使用QAndroidJniObject将C ++函数setWindowFlag()绑定到Java方法MyJavaClass.setWindowFlag()。

更多详细信息可以在QAndroidJniObject的文档页面上找到。