diff options
Diffstat (limited to 'src/androidextras/android/qandroidfunctions.cpp')
-rw-r--r-- | src/androidextras/android/qandroidfunctions.cpp | 108 |
1 files changed, 93 insertions, 15 deletions
diff --git a/src/androidextras/android/qandroidfunctions.cpp b/src/androidextras/android/qandroidfunctions.cpp index 9158a05..5b7f12f 100644 --- a/src/androidextras/android/qandroidfunctions.cpp +++ b/src/androidextras/android/qandroidfunctions.cpp @@ -1,31 +1,37 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL21$ +** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** @@ -35,6 +41,7 @@ #include "qandroidactivityresultreceiver.h" #include "qandroidactivityresultreceiver_p.h" +#include <QtCore/private/qjni_p.h> #include <QtCore/private/qjnihelpers_p.h> QT_BEGIN_NAMESPACE @@ -53,7 +60,7 @@ QT_BEGIN_NAMESPACE Returns a handle to this applications main Activity - \sa QAndroidJniObject + \sa QAndroidJniObject, androidService() */ QAndroidJniObject QtAndroid::androidActivity() { @@ -61,6 +68,19 @@ QAndroidJniObject QtAndroid::androidActivity() } /*! + \since 5.7 + \fn QAndroidJniObject QtAndroid::androidService() + + Returns a handle to this applications main Service + + \sa QAndroidJniObject, androidActivity() +*/ +QAndroidJniObject QtAndroid::androidService() +{ + return QtAndroidPrivate::service(); +} + +/*! \since 5.3 \fn int QtAndroid::androidSdkVersion() @@ -145,4 +165,62 @@ void QtAndroid::startIntentSender(const QAndroidJniObject &intentSender, } +/*! + \since 5.7 + \fn void QtAndroid::runOnAndroidThread(const Runnable &runnable) + + Posts the given \a runnable on the android thread. + The \a runnable will be queued and executed on the Android UI thread, unless it called on the + Android UI thread, in which case the runnable will be executed immediately. + + This function is useful to set asynchronously properties of objects that must be set on on Android UI thread. +*/ +void QtAndroid::runOnAndroidThread(const QtAndroid::Runnable &runnable) +{ + QtAndroidPrivate::runOnAndroidThread(runnable, QJNIEnvironmentPrivate()); +} + +/*! + \since 5.7 + \fn void QtAndroid::runOnAndroidThreadSync(const Runnable &runnable, int timeoutMs) + + Posts the \a runnable on the Android UI thread and waits until the runnable is executed, + or until \a timeoutMs has passed + + This function is useful to create objects, or get properties on Android UI thread: + + \code + QAndroidJniObject javaControl; + QtAndroid::runOnAndroidThreadSync([&javaControl](){ + + // create our Java control on Android UI thread. + javaControl = QAndroidJniObject("android/webkit/WebView", + "(Landroid/content/Context;)V", + QtAndroid::androidActivity().object<jobject>()); + javaControl.callMethod<void>("setWebViewClient", + "(Landroid/webkit/WebViewClient;)V", + QAndroidJniObject("android/webkit/WebViewClient").object()); + }); + + // Continue the execution normally + qDebug() << javaControl.isValid(); + \endcode +*/ +void QtAndroid::runOnAndroidThreadSync(const QtAndroid::Runnable &runnable, int timeoutMs) +{ + QtAndroidPrivate::runOnAndroidThreadSync(runnable, QJNIEnvironmentPrivate(), timeoutMs); +} + + +/*! + \since 5.7 + \fn void QtAndroid::hideSplashScreen() + + Hides the splash screen. +*/ +void QtAndroid::hideSplashScreen() +{ + QtAndroidPrivate::hideSplashScreen(QJNIEnvironmentPrivate()); +} + QT_END_NAMESPACE |