2026-09-14 15:31:21 +05:30
|
|
|
#include "wifihelper.h"
|
|
|
|
|
#include <QCoreApplication>
|
|
|
|
|
#include <QGuiApplication>
|
2026-09-23 17:36:00 +05:30
|
|
|
#ifdef Q_OS_ANDROID
|
2026-09-14 15:31:21 +05:30
|
|
|
#include <QJniObject>
|
2026-09-23 17:36:00 +05:30
|
|
|
#endif
|
2026-09-14 15:31:21 +05:30
|
|
|
#include <QPermissions>
|
|
|
|
|
|
|
|
|
|
WiFiHelper::WiFiHelper(QObject *parent)
|
|
|
|
|
: QObject{parent}
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString WiFiHelper::getWifiSsid() {
|
2026-09-23 17:36:00 +05:30
|
|
|
#ifdef Q_OS_ANDROID
|
2026-09-14 15:31:21 +05:30
|
|
|
// 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;
|
2026-09-23 17:36:00 +05:30
|
|
|
#endif
|
|
|
|
|
return "";
|
2026-09-14 15:31:21 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void WiFiHelper::requestPermissionsAndFetch() {
|
2026-09-23 17:36:00 +05:30
|
|
|
#ifdef Q_OS_ANDROID
|
2026-09-14 15:31:21 +05:30
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
2026-09-23 17:36:00 +05:30
|
|
|
#endif
|
2026-09-14 15:31:21 +05:30
|
|
|
}
|