【问题标题】:Android: How to get current Wifi encryption?Android:如何获得当前的 Wifi 加密?
【发布时间】:2011-06-16 12:56:04
【问题描述】:

我有一个监听器正在监听连接变化,尤其是从 GSM 到 WIFI。 现在我想记录下用户连接了哪些 WIFI,尤其是 WIFI 的加密类型(无、WEP、WPA、WPA2...)。

监听器工作正常,但我找不到任何方法来获取当前 Wifi 的加密类型。

感谢您的帮助。

【问题讨论】:

    标签: android encryption connection wifi


    【解决方案1】:

    使用WifiManager 获取当前连接的详细信息,然后获取WifiConfiguration,它应该可以为您提供更多信息。

    WifiManager wifiManager= (WifiManager) getSystemService(Context.WIFI_SERVICE);
    WifiInfo wi = WifiManager.getConnectionInfo();
    if( wi != null )
    {
        WifiConfiguration activeConfig = null;
        for( WifiConfiguration conn : wifiManager.getConfiguredNetworks() )
        {
            if( conn.status == WifiConfiguration.Status.CURRENT )
            {
                activeConfig = conn;
                break;
            }
        }
        if( activeConfig != null )
        {
            // Analyse encryption of connected network here.
        }
    }
    

    【讨论】:

    • 谢谢!我发现了,但似乎获得 WifiConfiguration 的唯一方法似乎是 WindowManager.getConfiguredNetworks(),它返回一个 List。我现在可以通过 BSSID 获取当前的 Wifi,还是当前连接的网络总是列表中的第一个?
    • 感谢您的帮助,马克。我刚刚通过 WifiConfiguration.status 标志找到了另一种获取当前 wifi 的方法。这必须等于 WifiConfiguration.Status.CURRENT
    • 不错的发现!我没有意识到这一点。它应该使代码更高效。如果您发现它有帮助,请“接受”答案。
    • 你能告诉我,你是如何从 WifiConfiguration 对象中提取加密的吗?我查看了 allowed* BitSets,但它们仅对 WEP/OPEN/WPA 网络有所不同,对于 WPA 和 WPA2,所有字段都相同。我如何区分 WPA 和 WPA2 网络?
    • @Tobi WifiConfiguration.status 在三星 Galaxy Tab 7 (android 4.1.2) 上不起作用。 Resurns 网络列表,但仅带有 ENABLED 或 DISABLED 标志,而不是从 Mark 返回状态当前解决方案工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2014-09-26
    相关资源
    最近更新 更多