7#include <QtCore/qcoreapplication.h>
8#include <QtCore/qjnienvironment.h>
12using namespace QNativeInterface;
22 "org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation";
26 if (!androidConnManagerInstance())
28 return androidConnManagerInstance->connManager.get();
36 const auto connectivity =
37 static_cast<AndroidConnectivityManager::AndroidConnectivity>(enumValue);
38 QMetaObject::invokeMethod(manager, [manager, connectivity] {
39 Q_EMIT manager->connectivityChanged(connectivity);
40 }, Qt::QueuedConnection);
42Q_DECLARE_JNI_NATIVE_METHOD(networkConnectivityChanged)
49 QMetaObject::invokeMethod(manager, [manager, captivePortal, metered] {
50 Q_EMIT manager->captivePortalChanged(captivePortal);
51 Q_EMIT manager->meteredChanged(metered);
52 }, Qt::QueuedConnection);
54Q_DECLARE_JNI_NATIVE_METHOD(genericInfoChanged)
61 const auto transport =
static_cast<AndroidConnectivityManager::AndroidTransport>(enumValue);
62 QMetaObject::invokeMethod(manager, [manager, transport] {
63 Q_EMIT manager->transportMediumChanged(transport);
64 }, Qt::QueuedConnection);
66Q_DECLARE_JNI_NATIVE_METHOD(transportMediumChanged)
68Q_DECLARE_JNI_CLASS(ConnectivityManager,
"android/net/ConnectivityManager")
70AndroidConnectivityManager::AndroidConnectivityManager()
72 if (!registerNatives())
75 QJniObject::callStaticMethod<
void>(networkInformationClass,
"registerReceiver",
76 QAndroidApplication::context());
79AndroidConnectivityManager *AndroidConnectivityManager::getInstance()
81 if (!androidConnManagerInstance())
83 return androidConnManagerInstance->connManager->isValid()
84 ? androidConnManagerInstance->connManager.get()
88bool AndroidConnectivityManager::isValid()
const
90 return registerNatives();
93AndroidConnectivityManager::~AndroidConnectivityManager()
95 QJniObject::callStaticMethod<
void>(networkInformationClass,
"unregisterReceiver",
96 QAndroidApplication::context());
99bool AndroidConnectivityManager::registerNatives()
const
101 static const bool registered = []() {
103 return env.registerNativeMethods(networkInformationClass, {
104 Q_JNI_NATIVE_METHOD(networkConnectivityChanged),
105 Q_JNI_NATIVE_METHOD(genericInfoChanged),
106 Q_JNI_NATIVE_METHOD(transportMediumChanged),
114#include "moc_androidconnectivitymanager.cpp"
static const char networkInformationClass[]
static void networkConnectivityChanged(JNIEnv *, jobject, jint enumValue)
static void transportMediumChanged(JNIEnv *, jobject, jint enumValue)
static AndroidConnectivityManager * liveConnManager()
static void genericInfoChanged(JNIEnv *, jobject, jboolean captivePortal, jboolean metered)
Combined button and popup list for selecting options.
std::unique_ptr< AndroidConnectivityManager > connManager
AndroidConnectivityManagerInstance()