0

就像之前被问到 的那样,如果你在 Android 的 Qt 代码中有这个:

ANativeActivity* theActivity = <something>;

ANativeActivity_setWindowFlags( theActivity,
            AWINDOW_FLAG_DISMISS_KEYGUARD, 0 );

如何获得指向运行 Qt 应用程序的本机活动的指针(<something>位)?

谢谢!

4

1 回答 1

0

如果您可以获得指向 Java QtActivity 对象的 C++ 指针,我不是很肯定,因为它们生活在两个不同的世界中。

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

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

第 2 步:使用名为 setActivity(Activity activity) 的方法创建一个名为 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 的文档页面上找到。

于 2015-05-04T22:07:20.103 回答