检测是否启用了WiFi数据?

时间:2015-08-13 13:59:09

标签: android android-wifi android-wireless

我需要知道如何检测WiFi状态,我通过true检查isNetworkconnected()时获得ConnectivityManager返回,但实际上响应是由受人尊敬的WIFI服务器操纵的。

假设我访问了WIFI免费但我需要登录该网络进行访问的地方,但同时如果我在没有登录该wifi的情况下启动我的应用程序,我将获得WIFI连接返回{{1} } via true(仅作为android检查是否连接了WIFI),以及来自该wifi主机的一些意外响应。

如何检测此类连接?在这种情况下,我看到有多个应用程序加载器正在运行,但它们如何检测到它

1 个答案:

答案 0 :(得分:0)

我认为您无法通过连接管理器进行测试。由于您所说的原因,结果总是不可靠。

所以,正如我所看到的,你有两个选择:

1)您可以像批准的列表一样测试Wi-Fi的SSID,如果用户不在该SSID上,则会提醒他们。

以下是获取当前连接的路由器(iOS 7 +)的SSID的方法:

@import SystemConfiguration.CaptiveNetwork;

/** Returns first non-empty SSID network info dictionary.
 *  @see CNCopyCurrentNetworkInfo */
- (NSDictionary *)fetchSSIDInfo
{
    NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());
    NSLog(@"%s: Supported interfaces: %@", __func__, interfaceNames);

    NSDictionary *SSIDInfo;
    for (NSString *interfaceName in interfaceNames) {
        SSIDInfo = CFBridgingRelease(
        CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));
        NSLog(@"%s: %@ => %@", __func__, interfaceName, SSIDInfo);

        BOOL isNotEmpty = (SSIDInfo.count > 0);
        if (isNotEmpty) {
            break;
        }
    }
    return SSIDInfo;
}

2)我建议您忘记尝试使用这些标准方法测试Wi-Fi,并且在尝试使用Wi-Fi之前,只需触发超过3秒的请求。如果您收到有效的回复,则表示您已连接,否则失败。