4#ifndef QCOREAPPLICATION_PLATFORM_H
5#define QCOREAPPLICATION_PLATFORM_H
16#include <QtCore/qglobal.h>
17#include <QtCore/qnativeinterface.h>
18#include <QtCore/qcoreapplication.h>
20#if defined(Q_OS_ANDROID) || defined(Q_QDOC)
21#include <QtCore/qjnitypes.h>
22#if QT_CONFIG(future) && !defined(QT_NO_QOBJECT)
23#include <QtCore/qfuture.h>
24#include <QtCore/qvariant.h>
28#if defined(Q_OS_ANDROID)
30typedef _jobject* jobject;
35namespace QNativeInterface
37#if defined(Q_OS_ANDROID) || defined(Q_QDOC)
38struct Q_CORE_EXPORT QAndroidApplication
40 QT_DECLARE_NATIVE_INTERFACE(QAndroidApplication, 1, QCoreApplication)
42 static QJniObject context();
44 static QtJniTypes::Context context();
46 static bool isActivityContext();
47 static int sdkVersion();
48 static void hideSplashScreen(
int duration = 0);
50#if QT_CONFIG(future) && !defined(QT_NO_QOBJECT)
51 static QFuture<QVariant> runOnAndroidMainThread(
const std::function<QVariant()> &runnable,
52 const QDeadlineTimer timeout = QDeadlineTimer::Forever);
55 std::enable_if_t<std::is_invocable_v<T> && std::is_same_v<std::invoke_result_t<T>,
void>,
56 QFuture<
void>>
static runOnAndroidMainThread(
const T &runnable,
57 const QDeadlineTimer timeout = QDeadlineTimer::Forever)
59 std::function<QVariant()> func = [runnable](){ runnable();
return QVariant(); };
60 return static_cast<QFuture<
void>>(runOnAndroidMainThread(func, timeout));