Added a text to display wifi status.
This commit is contained in:
parent
ca73f70b63
commit
b8201398e1
1 changed files with 267 additions and 18 deletions
70
wifihelper.cpp
Normal file
70
wifihelper.cpp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#include "wifihelper.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QJniObject>
|
||||
#include <QPermissions>
|
||||
|
||||
WiFiHelper::WiFiHelper(QObject *parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QString WiFiHelper::getWifiSsid() {
|
||||
// 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;
|
||||
}
|
||||
|
||||
void WiFiHelper::requestPermissionsAndFetch() {
|
||||
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");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue