7#include <QtCore/qcoreapplication.h>
8#include <QtCore/qjnienvironment.h>
12using namespace QNativeInterface;
22 "org/qtproject/qt/android/networkinformation/QtAndroidNetworkInformation";
28 const auto connectivity =
29 static_cast<AndroidConnectivityManager::AndroidConnectivity>(enumValue);
30 Q_EMIT androidConnManagerInstance->connManager->connectivityChanged(connectivity);
32Q_DECLARE_JNI_NATIVE_METHOD(networkConnectivityChanged)
34static void genericInfoChanged(JNIEnv *env, jobject obj, jboolean captivePortal, jboolean metered)
38 Q_EMIT androidConnManagerInstance->connManager->captivePortalChanged(captivePortal);
39 Q_EMIT androidConnManagerInstance->connManager->meteredChanged(metered);
41Q_DECLARE_JNI_NATIVE_METHOD(genericInfoChanged)
47 const auto transport =
static_cast<AndroidConnectivityManager::AndroidTransport>(enumValue);
48 emit androidConnManagerInstance->connManager->transportMediumChanged(transport);
50Q_DECLARE_JNI_NATIVE_METHOD(transportMediumChanged)
52Q_DECLARE_JNI_CLASS(ConnectivityManager,
"android/net/ConnectivityManager")
54AndroidConnectivityManager::AndroidConnectivityManager()
56 if (!registerNatives())
59 QJniObject::callStaticMethod<
void>(networkInformationClass,
"registerReceiver",
60 QAndroidApplication::context());
63AndroidConnectivityManager *AndroidConnectivityManager::getInstance()
65 if (!androidConnManagerInstance())
67 return androidConnManagerInstance->connManager->isValid()
68 ? androidConnManagerInstance->connManager.get()
72bool AndroidConnectivityManager::isValid()
const
74 return registerNatives();
77AndroidConnectivityManager::~AndroidConnectivityManager()
79 QJniObject::callStaticMethod<
void>(networkInformationClass,
"unregisterReceiver",
80 QAndroidApplication::context());
83bool AndroidConnectivityManager::registerNatives()
const
85 static const bool registered = []() {
87 return env.registerNativeMethods(networkInformationClass, {
88 Q_JNI_NATIVE_METHOD(networkConnectivityChanged),
89 Q_JNI_NATIVE_METHOD(genericInfoChanged),
90 Q_JNI_NATIVE_METHOD(transportMediumChanged),
98#include "moc_androidconnectivitymanager.cpp"
static const char networkInformationClass[]
static void transportMediumChanged(JNIEnv *env, jobject obj, jint enumValue)
static void genericInfoChanged(JNIEnv *env, jobject obj, jboolean captivePortal, jboolean metered)
static void networkConnectivityChanged(JNIEnv *env, jobject obj, jint enumValue)
std::unique_ptr< AndroidConnectivityManager > connManager
AndroidConnectivityManagerInstance()