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>
This commit is contained in:
Mårten Nordheim 2021-10-25 20:23:24 +02:00
parent bd52c1bba6
commit 83ddf49bc7
4 changed files with 13 additions and 6 deletions

View File

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

View File

@ -127,6 +127,9 @@ QAndroidNetworkInformationBackend::QAndroidNetworkInformationBackend()
connect(conman, &AndroidConnectivityManager::transportMediumChanged, this,
&QAndroidNetworkInformationBackend::updateTransportMedium);
connect(conman, &AndroidConnectivityManager::meteredChanged, this,
&QAndroidNetworkInformationBackend::setMetered);
}
void QAndroidNetworkInformationBackend::updateConnectivity(

View File

@ -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) },
};

View File

@ -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;