Sur cette page

QNativeInterface::QAndroidApplication Struct

Interface native vers une application principale sous Android. En savoir plus...

En-tête : #include <QCoreApplication>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core
Depuis : Qt 6.2

Fonctions publiques

QAndroidApplication()
QAndroidApplication(const QNativeInterface::QAndroidApplication &)
QAndroidApplication(QNativeInterface::QAndroidApplication &&)
QNativeInterface::QAndroidApplication &operator=(QNativeInterface::QAndroidApplication &&)
QNativeInterface::QAndroidApplication &operator=(const QNativeInterface::QAndroidApplication &)

Membres publics statiques

(since 6.2) QJniObject context()
(since 6.2) void hideSplashScreen(int duration = 0)
(since 6.2) bool isActivityContext()
(since 6.2) QFuture<QVariant> runOnAndroidMainThread(const std::function<QVariant ()> &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever)
(since 6.2) int sdkVersion()

Description détaillée

Accessible via QCoreApplication::nativeInterface().

Documentation des fonctions membres

[constexpr noexcept default] QAndroidApplication::QAndroidApplication()

Construit par défaut une instance de ` QAndroidApplication`.

[delete] QAndroidApplication::QAndroidApplication(const QNativeInterface::QAndroidApplication &)

Copie et construit une instance de ` QAndroidApplication`. Cette fonction est supprimée.

[delete] QAndroidApplication::QAndroidApplication(QNativeInterface::QAndroidApplication &&)

Crée par « move » une instance de ` QAndroidApplication`. Cette fonction est supprimée.

[static, since 6.2] QJniObject QAndroidApplication::context()

Renvoie le contexte Android sous la forme d'un objet ` QtJniTypes::Context`. Le contexte est de type ` Activity ` si l'objet d'activité lancé le plus récemment est valide. Dans le cas contraire, le contexte est de type ` Service`.

Cette fonction a été introduite dans Qt 6.2.

[static, since 6.2] void QAndroidApplication::hideSplashScreen(int duration = 0)

Masque l'écran de démarrage à l'aide d'un effet de fondu selon l'duration. Si duration n'est pas spécifié (la valeur par défaut est 0), l'écran de démarrage est masqué immédiatement après le lancement de l'application.

Cette fonction a été introduite dans Qt 6.2.

[static, since 6.2] bool QAndroidApplication::isActivityContext()

Renvoie ` true ` si ` QAndroidApplication::context()` fournit un contexte ` Activity `.

Cette fonction a été introduite dans Qt 6.2.

[static, since 6.2] QFuture<QVariant> QAndroidApplication::runOnAndroidMainThread(const std::function<QVariant ()> &runnable, const QDeadlineTimer timeout = QDeadlineTimer::Forever)

Envoie la fonction runnable vers le thread Android. La fonction sera mise en file d'attente et exécutée sur le thread de l'interface utilisateur Android. Si l'appel est effectué sur le thread de l'interface utilisateur Android, runnable sera exécuté immédiatement. Si l'application Android est en pause ou si l'activité principale est nulle, runnable est ajouté à la file d'attente du thread principal d'Android.

Cet appel renvoie un objet ` QFuture` <QVariant> qui permet d’effectuer des appels synchrones et asynchrones, et peut gérer n’importe quel type de retour. Cependant, pour récupérer un résultat de la fonction ` QFuture::result()`, il convient d’utiliser ` QVariant::value()`.

Si l’exécution de ` runnable ` prend plus de temps que la durée définie par ` timeout`, les appels bloquants ` QFuture::waitForFinished()` et ` QFuture::result()` sont interrompus une fois que ` timeout ` s’est écoulé. Toutefois, si ` runnable ` a déjà commencé son exécution, celle-ci ne sera pas annulée.

L'exemple suivant montre comment exécuter un appel asynchrone qui attend un type de retour :

auto task = QNativeInterface::QAndroidApplication::runOnAndroidMainThread([=]() {
    QJniObject surfaceView;
    if (!surfaceView.isValid())
        qDebug() << "SurfaceView object is not valid yet";

    surfaceView = QJniObject("android/view/SurfaceView",
                             "(Landroid/content/Context;)V",
                             QNativeInterface::QAndroidApplication::context());

    return QVariant::fromValue(surfaceView);
}).then([](QFuture<QVariant> future) {
    auto surfaceView = future.result().value<QJniObject>();
    if (surfaceView.isValid())
        qDebug() << "Retrieved SurfaceView object is valid";
});

L'exemple suivant montre comment exécuter un appel synchrone avec un type de retour void :

QNativeInterface::QAndroidApplication::runOnAndroidMainThread([]() {
   QJniObject activity = QNativeInterface::QAndroidApplication::context();
   // Hide system ui elements or go full screen
   activity.callObjectMethod("getWindow", "()Landroid/view/Window;")
           .callObjectMethod("getDecorView", "()Landroid/view/View;")
           .callMethod<void>("setSystemUiVisibility", "(I)V", 0xffffffff);
}).waitForFinished();

Remarque : faites attention au type d’opérations que vous effectuez sur le thread principal d’Android, car toute opération longue peut bloquer le rendu de l’interface utilisateur et la gestion des entrées de l’application. Si la fonction est susceptible d’avoir un temps d’exécution long, il est également recommandé d’utiliser un ` QDeadlineTimer ` dans votre ` runnable ` pour gérer l’exécution et vous assurer qu’elle ne bloque pas le thread de l’interface utilisateur. En règle générale, toute opération d’une durée supérieure à 5 secondes est susceptible de bloquer l’interface utilisateur de l’application. Pour plus d’informations, consultez la section « Assurer la réactivité de votre application ».

Cette fonction a été introduite dans Qt 6.2.

[static, since 6.2] int QAndroidApplication::sdkVersion()

Renvoie la version du SDK Android. Celle-ci est également appelée « niveau d'API ».

Cette fonction a été introduite dans Qt 6.2.

[delete] QNativeInterface::QAndroidApplication &QAndroidApplication::operator=(QNativeInterface::QAndroidApplication &&)

La commande « Move » attribue « other » à cette instance de « QAndroidApplication ». Cette fonction est supprimée.

[delete] QNativeInterface::QAndroidApplication &QAndroidApplication::operator=(const QNativeInterface::QAndroidApplication &)

Copie et attribue « other » à cette instance « QAndroidApplication ». Cette fonction est supprimée.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.