diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2021-10-25 20:23:24 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2021-11-04 11:02:29 +0000 |
commit | 83ddf49bc71736a19f27e6e8b72831ea72e441cc (patch) | |
tree | a295d125f5dc48abb2bdd7849e7190033a71734e /src/plugins/networkinformation/android | |
parent | bd52c1bba6f5a0b7e820596e566146b5cf8a4ee7 (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/android')
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; |