区分开放和密码锁定的可用 WiFi 网络
Distinguish between open and password locked available WiFi networks
我正在开发一些在 Linux workstation 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
上使用 Qt 5.7.0 GCC 64bit
的应用程序,其中显示了可供选择的 WiFi
网络,核心代码在这里:
void UeWiFiDiscoveryTask::run()
{
QList<QNetworkConfiguration> networksList=this->ueNetworkConfigurationManager()->allConfigurations();
QList<UeWiFiNetworkRecord*> wifiList=QList<UeWiFiNetworkRecord*>();
foreach(QNetworkConfiguration network,
networksList)
{
if(network.isValid()&&network.bearerType()==QNetworkConfiguration::BearerWLAN&&network.state()==QNetworkConfiguration::Discovered)
{
qDebug() << Q_FUNC_INFO
<< network.state();
wifiList.append(new UeWiFiNetworkRecord(new QImage(":/images/testWifi.jpg"),
network.name()));
emit this->ueSignalWiFiFound(*wifiList.last());
} // if
} // foreach
emit this->ueSignalWiFiDiscoveryFinished(wifiList);
} // run
代码在单独的线程上运行并且运行良好。但是,我正在阅读 Qt Bearer Management docs,但我找不到如何区分 Free WiFi
和 encrypted/protected WiFi
的方法。我如何添加这样的功能?
P.S.: 我知道这是如何做的问题,我准备好获得一些负面评价,但是,我一直在阅读文档几天,我迷路了!
假设这是一个带有 NetworkManager 的系统,那么 QNetworkConfiguration::identifier()
将 return NetworkManager 配置项的 D-Bus ObjectPath。
即您可以使用 QtDBus 在该对象上调用 org.freedesktop.NetworkManager.Settings.Connection.GetSettings()
方法,我认为它应该包含您要查找的信息
我正在开发一些在 Linux workstation 4.4.0-36-generic #55-Ubuntu SMP Thu Aug 11 18:01:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
上使用 Qt 5.7.0 GCC 64bit
的应用程序,其中显示了可供选择的 WiFi
网络,核心代码在这里:
void UeWiFiDiscoveryTask::run()
{
QList<QNetworkConfiguration> networksList=this->ueNetworkConfigurationManager()->allConfigurations();
QList<UeWiFiNetworkRecord*> wifiList=QList<UeWiFiNetworkRecord*>();
foreach(QNetworkConfiguration network,
networksList)
{
if(network.isValid()&&network.bearerType()==QNetworkConfiguration::BearerWLAN&&network.state()==QNetworkConfiguration::Discovered)
{
qDebug() << Q_FUNC_INFO
<< network.state();
wifiList.append(new UeWiFiNetworkRecord(new QImage(":/images/testWifi.jpg"),
network.name()));
emit this->ueSignalWiFiFound(*wifiList.last());
} // if
} // foreach
emit this->ueSignalWiFiDiscoveryFinished(wifiList);
} // run
代码在单独的线程上运行并且运行良好。但是,我正在阅读 Qt Bearer Management docs,但我找不到如何区分 Free WiFi
和 encrypted/protected WiFi
的方法。我如何添加这样的功能?
P.S.: 我知道这是如何做的问题,我准备好获得一些负面评价,但是,我一直在阅读文档几天,我迷路了!
假设这是一个带有 NetworkManager 的系统,那么 QNetworkConfiguration::identifier()
将 return NetworkManager 配置项的 D-Bus ObjectPath。
即您可以使用 QtDBus 在该对象上调用 org.freedesktop.NetworkManager.Settings.Connection.GetSettings()
方法,我认为它应该包含您要查找的信息