【问题标题】:Detect whether WiFi data is enabled or not?检测是否启用了 WiFi 数据?
【发布时间】:2015-08-13 13:59:09
【问题描述】:

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

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

如何检测这种连接?我已经看到在这种情况下运行了多个应用程序加载器,但是它们如何检测到呢?

【问题讨论】:

    标签: android android-wifi android-wireless


    【解决方案1】:

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

    所以,在我看来,你有两个选择:

    1) 您测试 Wi-Fi 的 SSID,例如批准列表或其他东西,如果用户不在该 SSID 上,您会提醒他们。

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

    @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 秒的请求。如果您收到有效响应,则说明您已连接,否则连接失败。

    【讨论】:

    • 嗨夏尔马,我很难说,因为我不知道你想用 Wi-Fi 连接做什么。您打算通过 Wi-Fi 接收的数据是您应该提出的请求。
    • 如果这没有意义,请告诉我:)
    • 我只想检测是否有防火墙在操纵我的网络请求的实际响应。我得到的响应是登录页面的长 html 代码,而不是正常的 JSOn 响应。所以我在 catch 块中捕获了错误,因为我无法解析它。这一切都是因为用户的本地连接(防火墙或(访客管理系统应用程序))正在操纵响应。如果我无法表达我真正想要的东西,请告诉我..
    • 对,所以我建议您使用这个解析错误捕获块来检测它是否失败。您可以只创建一个小方法来执行该请求并返回一个布尔值,如果它是一个有效的响应,如果不是,它就失败了。我觉得这稍微超出了原始问题的范围。
    • 这就是我目前正在做的事情......你让我对这种方法感到舒服......谢谢......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多