就像之前被问到 的那样,如果你在 Android 的 Qt 代码中有这个:
ANativeActivity* theActivity = <something>;
ANativeActivity_setWindowFlags( theActivity,
AWINDOW_FLAG_DISMISS_KEYGUARD, 0 );
如何获得指向运行 Qt 应用程序的本机活动的指针(<something>
位)?
谢谢!
如果您可以获得指向 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 的文档页面上找到。