En esta página

QNativeInterface::QAndroidApplication Struct

Interfaz nativa para una aplicación central en Android. Más...

Cabecera: #include <QCoreApplication>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Desde: Qt 6.2

Miembros públicos estáticos

(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()

Descripción Detallada

Se accede a través de QCoreApplication::nativeInterface().

Documentación de la Función Miembro

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

Devuelve el contexto de Android como un QtJniTypes::Context. El contexto es un Activity si el objeto de actividad iniciado más recientemente es válido. En caso contrario, el contexto es un Service.

Esta función se introdujo en Qt 6.2.

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

Oculta la pantalla de inicio utilizando un efecto de desvanecimiento para la dirección duration. Si no se proporciona duration (el valor predeterminado es 0), la pantalla de inicio se oculta inmediatamente después de iniciarse la aplicación.

Esta función se introdujo en Qt 6.2.

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

Devuelve true si QAndroidApplication::context() proporciona un contexto Activity.

Esta función se introdujo en Qt 6.2.

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

Envía la función runnable al subproceso de Android. La función se pondrá en cola y se ejecutará en el hilo Android UI. Si la llamada se realiza en el hilo Android UI runnable se ejecutará inmediatamente. Si la aplicación Android está en pausa o la Actividad principal es nula, runnable se añade a la cola del hilo principal de Android.

Esta llamada devuelve un QFuture<QVariant> que permite realizar tanto llamadas síncronas como asíncronas, y puede manejar cualquier tipo de retorno. Sin embargo, para obtener un resultado de vuelta de QFuture::result(), se debe utilizar QVariant::value().

Si la ejecución de runnable dura más que el periodo de timeout, las llamadas de bloqueo QFuture::waitForFinished() y QFuture::result() finalizan una vez que timeout ha transcurrido. Sin embargo, si runnable ya ha comenzado su ejecución, no se cancelará.

El siguiente ejemplo muestra cómo ejecutar una llamada asíncrona que espera un tipo de retorno:

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";
});

El siguiente ejemplo muestra cómo ejecutar una llamada síncrona con un tipo de retorno 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();

Nota: Ten cuidado con el tipo de operaciones que realizas en el hilo principal de Android, ya que cualquier operación larga puede bloquear la renderización de la interfaz de usuario de la aplicación y el manejo de las entradas. Si se espera que la función tenga un largo tiempo de ejecución, también es bueno utilizar un QDeadlineTimer en su runnable para gestionar la ejecución y asegurarse de que no bloquea el hilo de la interfaz de usuario. Normalmente, cualquier operación de más de 5 segundos puede bloquear la interfaz de usuario de la aplicación. Para más información, consulta Mantén la capacidad de respuesta de tu aplicación.

Esta función se introdujo en Qt 6.2.

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

Devuelve la versión del SDK de Android. También se conoce como nivel de API.

Esta función se introdujo en Qt 6.2.

© 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.