#include "wifihelper.h" #include #include #ifdef Q_OS_ANDROID #include #endif #include WiFiHelper::WiFiHelper(QObject *parent) : QObject{parent} { } QString WiFiHelper::getWifiSsid() { #ifdef Q_OS_ANDROID // Get Android application context in Qt 6 QJniObject context = QNativeInterface::QAndroidApplication::context(); if (!context.isValid()) return QString(); // Get WifiManager service QJniObject wifiService = QJniObject::fromString("wifi"); QJniObject wifiManager = context.callObjectMethod( "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;", wifiService.object() ); if (!wifiManager.isValid()) return QString(); // Fetch WifiInfo QJniObject wifiInfo = wifiManager.callObjectMethod( "getConnectionInfo", "()Landroid/net/wifi/WifiInfo;" ); if (!wifiInfo.isValid()) return QString(); // Get SSID string QJniObject ssidJni = wifiInfo.callObjectMethod( "getSSID", "()Ljava/lang/String;" ); if (!ssidJni.isValid()) return QString(); QString ssid = ssidJni.toString(); // Android returns SSIDs wrapped in double quotes (e.g., "\"MyWiFi\"") if (ssid.startsWith('"') && ssid.endsWith('"') && ssid.length() > 1) { ssid = ssid.mid(1, ssid.length() - 2); } return ssid; #endif return ""; } void WiFiHelper::requestPermissionsAndFetch() { #ifdef Q_OS_ANDROID QLocationPermission locationPermission; locationPermission.setAccuracy(QLocationPermission::Accuracy::Precise); Qt::PermissionStatus status = qApp->checkPermission(locationPermission); if (status == Qt::PermissionStatus::Granted) { emit ssidRetrieved(getWifiSsid()); } else { qDebug() << "Requesting permission."; qApp->requestPermission(locationPermission, this, [this](const QPermission &permission) { if (permission.status() == Qt::PermissionStatus::Granted) { qDebug() << "Requested permission and got ssid"; emit ssidRetrieved(getWifiSsid()); } else { qDebug() << "Failed to get WiFi SSID due to denied permission."; emit ssidRetrieved("Permission Denied"); } }); } #endif }