summaryrefslogtreecommitdiffstats
path: root/src/plugins/networkinformation
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2021-10-25 20:23:24 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2021-11-04 11:02:29 +0000
commit83ddf49bc71736a19f27e6e8b72831ea72e441cc (patch)
treea295d125f5dc48abb2bdd7849e7190033a71734e /src/plugins/networkinformation
parentbd52c1bba6f5a0b7e820596e566146b5cf8a4ee7 (diff)
QNI: Android support for isMetered
Task-number: QTBUG-91024 Change-Id: I7a8fdcddc25fdb60390b424a888d0311afd8cef3 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/plugins/networkinformation')
-rw-r--r--src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java6
-rw-r--r--src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp3
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp9
-rw-r--r--src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h1
4 files changed, 13 insertions, 6 deletions
diff --git a/src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java b/src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java
index 51a3b43fd0..a35424f8e8 100644
--- a/src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java
+++ b/src/plugins/networkinformation/android/jar/src/org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation.java
@@ -52,7 +52,7 @@ public class QtAndroidNetworkInformation {
private static final String LOG_TAG = "QtAndroidNetworkInformation";
private static native void connectivityChanged(AndroidConnectivity connectivity);
- private static native void behindCaptivePortalChanged(boolean state);
+ private static native void genericInfoChanged(boolean captivePortal, boolean metered);
private static native void transportMediumChanged(Transport transportMedium);
private static QtNetworkInformationCallback m_callback = null;
@@ -101,7 +101,9 @@ public class QtAndroidNetworkInformation {
final boolean captive
= capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL);
- behindCaptivePortalChanged(captive);
+ final boolean metered
+ = !capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
+ genericInfoChanged(captive, metered);
}
private Transport getTransport(NetworkCapabilities capabilities)
diff --git a/src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp b/src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp
index 8f90ea82bd..2e4149f686 100644
--- a/src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp
+++ b/src/plugins/networkinformation/android/qandroidnetworkinformationbackend.cpp
@@ -127,6 +127,9 @@ QAndroidNetworkInformationBackend::QAndroidNetworkInformationBackend()
connect(conman, &AndroidConnectivityManager::transportMediumChanged, this,
&QAndroidNetworkInformationBackend::updateTransportMedium);
+
+ connect(conman, &AndroidConnectivityManager::meteredChanged, this,
+ &QAndroidNetworkInformationBackend::setMetered);
}
void QAndroidNetworkInformationBackend::updateConnectivity(
diff --git a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
index e95a7db610..5c1230bfaa 100644
--- a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
+++ b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.cpp
@@ -65,11 +65,12 @@ static void networkConnectivityChanged(JNIEnv *env, jobject obj, jobject enumVal
Q_EMIT androidConnManagerInstance->connManager->connectivityChanged(connectivity);
}
-static void behindCaptivePortalChanged(JNIEnv *env, jobject obj, jboolean state)
+static void genericInfoChanged(JNIEnv *env, jobject obj, jboolean captivePortal, jboolean metered)
{
Q_UNUSED(env);
Q_UNUSED(obj);
- Q_EMIT androidConnManagerInstance->connManager->captivePortalChanged(state);
+ Q_EMIT androidConnManagerInstance->connManager->captivePortalChanged(captivePortal);
+ Q_EMIT androidConnManagerInstance->connManager->meteredChanged(metered);
}
static void transportMediumChangedCallback(JNIEnv *env, jobject obj, jobject enumValue)
@@ -128,8 +129,8 @@ bool AndroidConnectivityManager::registerNatives()
static JNINativeMethod methods[] = {
{ "connectivityChanged", connectivityEnumSig.data(),
reinterpret_cast<void *>(networkConnectivityChanged) },
- { "behindCaptivePortalChanged", "(Z)V",
- reinterpret_cast<void *>(behindCaptivePortalChanged) },
+ { "genericInfoChanged", "(ZZ)V",
+ reinterpret_cast<void *>(genericInfoChanged) },
{ "transportMediumChanged", transportEnumSig.data(),
reinterpret_cast<void *>(transportMediumChangedCallback) },
};
diff --git a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
index b335a4a3e4..414ef2748a 100644
--- a/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
+++ b/src/plugins/networkinformation/android/wrapper/androidconnectivitymanager.h
@@ -75,6 +75,7 @@ Q_SIGNALS:
void connectivityChanged(AndroidConnectivity connectivity);
void captivePortalChanged(bool state);
void transportMediumChanged(AndroidTransport transport);
+ void meteredChanged(bool state);
private:
friend struct AndroidConnectivityManagerInstance;