summaryrefslogtreecommitdiffstats
path: root/src/plugins/networkinformation/android/wrapper
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/networkinformation/android/wrapper')
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp107
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h45
2 files changed, 35 insertions, 117 deletions
diff --git a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
index 5c1230bfaa..3c9f952968 100644
--- a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
+++ b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $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 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 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.
-**
-** 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$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "androidconnectivitymanager.h"
@@ -56,14 +20,15 @@ Q_GLOBAL_STATIC(AndroidConnectivityManagerInstance, androidConnManagerInstance)
static const char networkInformationClass[] =
"org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation";
-static void networkConnectivityChanged(JNIEnv *env, jobject obj, jobject enumValue)
+static void networkConnectivityChanged(JNIEnv *env, jobject obj, jint enumValue)
{
Q_UNUSED(env);
Q_UNUSED(obj);
- const jint value = QJniObject(enumValue).callMethod<jint>("ordinal");
- const auto connectivity = static_cast<AndroidConnectivityManager::AndroidConnectivity>(value);
+ const auto connectivity =
+ static_cast<AndroidConnectivityManager::AndroidConnectivity>(enumValue);
Q_EMIT androidConnManagerInstance->connManager->connectivityChanged(connectivity);
}
+Q_DECLARE_JNI_NATIVE_METHOD(networkConnectivityChanged)
static void genericInfoChanged(JNIEnv *env, jobject obj, jboolean captivePortal, jboolean metered)
{
@@ -72,30 +37,26 @@ static void genericInfoChanged(JNIEnv *env, jobject obj, jboolean captivePortal,
Q_EMIT androidConnManagerInstance->connManager->captivePortalChanged(captivePortal);
Q_EMIT androidConnManagerInstance->connManager->meteredChanged(metered);
}
+Q_DECLARE_JNI_NATIVE_METHOD(genericInfoChanged)
-static void transportMediumChangedCallback(JNIEnv *env, jobject obj, jobject enumValue)
+static void transportMediumChanged(JNIEnv *env, jobject obj, jint enumValue)
{
Q_UNUSED(env);
Q_UNUSED(obj);
- const jint value = QJniObject(enumValue).callMethod<jint>("ordinal");
- const auto transport = static_cast<AndroidConnectivityManager::AndroidTransport>(value);
+ const auto transport = static_cast<AndroidConnectivityManager::AndroidTransport>(enumValue);
emit androidConnManagerInstance->connManager->transportMediumChanged(transport);
}
+Q_DECLARE_JNI_NATIVE_METHOD(transportMediumChanged)
+
+Q_DECLARE_JNI_CLASS(ConnectivityManager, "android/net/ConnectivityManager")
AndroidConnectivityManager::AndroidConnectivityManager()
{
if (!registerNatives())
return;
- m_connectivityManager = QJniObject::callStaticObjectMethod(
- networkInformationClass, "getConnectivityManager",
- "(Landroid/content/Context;)Landroid/net/ConnectivityManager;",
- QAndroidApplication::context());
- if (!m_connectivityManager.isValid())
- return;
-
QJniObject::callStaticMethod<void>(networkInformationClass, "registerReceiver",
- "(Landroid/content/Context;)V", QAndroidApplication::context());
+ QAndroidApplication::context());
}
AndroidConnectivityManager *AndroidConnectivityManager::getInstance()
@@ -107,36 +68,30 @@ AndroidConnectivityManager *AndroidConnectivityManager::getInstance()
: nullptr;
}
+bool AndroidConnectivityManager::isValid() const
+{
+ return registerNatives();
+}
+
AndroidConnectivityManager::~AndroidConnectivityManager()
{
QJniObject::callStaticMethod<void>(networkInformationClass, "unregisterReceiver",
- "(Landroid/content/Context;)V", QAndroidApplication::context());
+ QAndroidApplication::context());
}
-bool AndroidConnectivityManager::registerNatives()
+bool AndroidConnectivityManager::registerNatives() const
{
- QJniEnvironment env;
- QJniObject networkReceiver(networkInformationClass);
- if (!networkReceiver.isValid())
- return false;
-
- const QByteArray connectivityEnumSig =
- QByteArray("(L") + networkInformationClass + "$AndroidConnectivity;)V";
- const QByteArray transportEnumSig =
- QByteArray("(L") + networkInformationClass + "$Transport;)V";
-
- jclass clazz = env->GetObjectClass(networkReceiver.object());
- static JNINativeMethod methods[] = {
- { "connectivityChanged", connectivityEnumSig.data(),
- reinterpret_cast<void *>(networkConnectivityChanged) },
- { "genericInfoChanged", "(ZZ)V",
- reinterpret_cast<void *>(genericInfoChanged) },
- { "transportMediumChanged", transportEnumSig.data(),
- reinterpret_cast<void *>(transportMediumChangedCallback) },
- };
- const bool ret = (env->RegisterNatives(clazz, methods, std::size(methods)) == JNI_OK);
- env->DeleteLocalRef(clazz);
- return ret;
+ static const bool registered = []() {
+ QJniEnvironment env;
+ return env.registerNativeMethods(networkInformationClass, {
+ Q_JNI_NATIVE_METHOD(networkConnectivityChanged),
+ Q_JNI_NATIVE_METHOD(genericInfoChanged),
+ Q_JNI_NATIVE_METHOD(transportMediumChanged),
+ });
+ }();
+ return registered;
}
QT_END_NAMESPACE
+
+#include "moc_androidconnectivitymanager.cpp"
diff --git a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
index 414ef2748a..d15faf0e8e 100644
--- a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
+++ b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
@@ -1,41 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the plugins of the Qt Toolkit.
-**
-** $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 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 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.
-**
-** 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$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef ANDROIDCONNECTIVITYMANAGER_H
#define ANDROIDCONNECTIVITYMANAGER_H
@@ -69,7 +33,7 @@ public:
static AndroidConnectivityManager *getInstance();
~AndroidConnectivityManager();
- inline bool isValid() const { return m_connectivityManager.isValid(); }
+ inline bool isValid() const;
Q_SIGNALS:
void connectivityChanged(AndroidConnectivity connectivity);
@@ -80,8 +44,7 @@ Q_SIGNALS:
private:
friend struct AndroidConnectivityManagerInstance;
AndroidConnectivityManager();
- bool registerNatives();
- QJniObject m_connectivityManager;
+ bool registerNatives() const;
Q_DISABLE_COPY_MOVE(AndroidConnectivityManager);
};